我有一个熊猫数据框架如下所示:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
我想用空字符串删除NaN值,使其看起来像这样:
1 2 3
0 a "" read
1 b l unread
2 c "" read
我有一个熊猫数据框架如下所示:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
我想用空字符串删除NaN值,使其看起来像这样:
1 2 3
0 a "" read
1 b l unread
2 c "" read
当前回答
使用格式化程序,如果你只是想格式化它,以便它在打印时很好地呈现。只需使用df.to_string(…格式化器来定义自定义字符串格式,而无需修改你的DataFrame或浪费内存:
df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [np.nan, 1, np.nan],
'C': ['read', 'unread', 'read']})
print df.to_string(
formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})
得到:
A B C
0 a read
1 b 1 unread
2 c read
其他回答
df = df.fillna('')
这将用“”填充na(例如NaN)。
Inplace是可能的,但应该避免使用,因为它将被弃用:
df.fillna('', inplace=True)
只填写一列:
df.column1 = df.column1.fillna('')
可以使用df['column1']代替df.column1。
试试这个,
添加原地= True
import numpy as np
df.replace(np.NaN, '', inplace=True)
使用keep_default_na=False可以帮助你:
df = pd.read_csv(filename, keep_default_na=False)
使用格式化程序,如果你只是想格式化它,以便它在打印时很好地呈现。只需使用df.to_string(…格式化器来定义自定义字符串格式,而无需修改你的DataFrame或浪费内存:
df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [np.nan, 1, np.nan],
'C': ['read', 'unread', 'read']})
print df.to_string(
formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})
得到:
A B C
0 a read
1 b 1 unread
2 c read
如果你正在将DataFrame转换为JSON, NaN将会给出错误,所以在这个用例中最好的解决方案是将NaN替换为None。 以下是如何做到的:
df1 = df.where((pd.notnull(df)), None)