将数据帧值转换为不为空(None)的str



我需要使用Python将数据输入SQL Server数据库,所以为了做到这一点,我将所有数据框转换为str之前:

df = df.astype(str)

但是如果我的数据框有空值作为None,None字也被转换为字符串并作为字符串被摄取到我的数据库以及下面的例子。

<表类>行类型tbody><<tr>1没有2项目3项目4项目5没有

使用str.replace:

# After df = df.astype(str)
df['Type'] = df['Type'].str.replace('None', '')

输出:

>>> df
Row       Type
0     1
1     2  projects
2     3  projects
3     4  projects
4     5

[编辑]

根据您的注释,下面的方法替换整个数据框中只包含None的单元格。

df = df.replace(r'^None$', '', regex=True)

注意:^匹配行首,$匹配行尾。

Maybe/Example:

import pandas as pd
df = pd.DataFrame({'col1':[None,None,None], 'col2': ['Nonevent',None,'Nonsuch'], 'col3': [None, 'Nonequivalence', None]})
df = df.astype(str)
print(df, 'n')
# currently looks like..
# 
#    col1      col2            col3
# 0  None  Nonevent            None
# 1  None      None  Nonequivalence
# 2  None   Nonsuch            None
# create a list of the current columns/remove any that should not be touched
cols = df.columns.to_list()
cols.remove('col3')
# from the filtered columns find the rows with 'None'
filter = df.loc[:,cols] == 'None'
# apply the filter and remove the 'None' values only from the columns required
df[filter] = ''
print(df)
# in this case only col1 and col2 are affected
#     col1      col2            col3
# 0         Nonevent            None
# 1                   Nonequivalence
# 2          Nonsuch            None

输出(前后):

col1      col2            col3
0  None  Nonevent            None
1  None      None  Nonequivalence
2  None   Nonsuch            None 

col1       col2            col3
0        Nonevent            None
1                  Nonequivalence
2         Nonsuch            None

相关内容

  • 没有找到相关文章

最新更新