我有一个Pandas Dataframe,如下所示:
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
答案 0 :(得分:236)
稍微短一些:
df = df.fillna('')
或只是
df.fillna('',inplace=True)
这将用''填充na(例如NaN)。
如果要填充单个列,可以使用:
df[column1] = df.column1.fillna('')
答案 1 :(得分:158)
import numpy as np
df1 = df.replace(np.nan, '', regex=True)
这可能会有所帮助。它将用空字符串替换所有NaN。
答案 2 :(得分:72)
df.read_csv(path , na_filter=False)
df.read_excel(path , na_filter=False)
强> 这会自动将空字段视为空字符串' ' 强>
df = df.replace(np.nan, '', regex=True)
强> df = df.fillna('')
强> 答案 3 :(得分:2)
使用格式化程序,如果您只想对其进行格式化,以使其在打印时呈现良好效果。只需使用df.to_string(... formatters
定义自定义字符串格式,而无需不必要地修改您的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
答案 4 :(得分:1)
尝试一下
添加inplace=True
import numpy as np
df.replace(np.NaN, ' ', inplace=True)
答案 5 :(得分:0)
如果您要将DataFrame转换为JSON,NaN
会出错,因此在此用例中最好的解决方案是将NaN
替换为None
。
方法如下:
df1 = df.where((pd.notnull(df)), None)
答案 6 :(得分:0)
使用keep_default_na=False
应该可以帮助您:
df = pd.read_csv(filename, keep_default_na=False)
答案 7 :(得分:0)
我尝试用nan来处理一列字符串值。
要删除nan并填充空字符串:
df.columnname.replace(np.nan,'',regex = True)
要删除nan并填写一些值:
df.columnname.replace(np.nan,'value',regex = True)
我也尝试了df.iloc。但它需要列的索引。所以您需要再次查看表格。简单地,上述方法减少了一个步骤。