我有一个熊猫数据框架如下所示:

    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

当前回答

如果你正在将DataFrame转换为JSON, NaN将会给出错误,所以在这个用例中最好的解决方案是将NaN替换为None。 以下是如何做到的:

df1 = df.where((pd.notnull(df)), None)

其他回答

如果你正在将DataFrame转换为JSON, NaN将会给出错误,所以在这个用例中最好的解决方案是将NaN替换为None。 以下是如何做到的:

df1 = df.where((pd.notnull(df)), None)

我用nan尝试了一列字符串值。

删除nan并填充空字符串:

df.columnname.replace (np。nan, ",regex = True)

删除nan并填充一些值:

df.columnname.replace (np。nan,'value',regex = True)

我试了df。iloc也。但它需要列的下标。所以你需要再看一下表格。简单地说,上述方法减少了一步。

使用格式化程序,如果你只是想格式化它,以便它在打印时很好地呈现。只需使用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

试试这个,

添加原地= True

import numpy as np
df.replace(np.NaN, '', inplace=True)
import numpy as np
df1 = df.replace(np.nan, '', regex=True)

这可能会有所帮助。它将用一个空字符串替换所有的nan。