如何在我的DataFrame中用空字符串替换所有“nan”字符串?

时间:2016-08-12 16:50:12

标签: python string pandas dataframe nan

我的数据框中散布着"None""nan"个字符串。有没有办法用空字符串""nan替换所有这些字符串,以便在将数据框导出为Excel工作表时不会显示它们?

简化示例:

注意:nan中的{/ strong> col4不是字符串

ID  col1   col2   col3   col4
1   Apple  nan    nan    nan
2   None   orange None   nan
3   None   nan    banana nan

在我们用空字符串"None"替换它们之后删除所有"nan"""字符串后,输出应如下所示:

ID  col1   col2   col3   col4
1   Apple                nan
2          orange        nan
3                 banana nan

知道如何解决这个问题吗?

谢谢,

4 个答案:

答案 0 :(得分:5)

使用字符串列表替换为不会影响实际nan的空白字符串...

df.replace(['nan', 'None'], '')

其中包含以下新数据框:

ID   col1    col2    col3  col4
1  Apple                   NaN
2         orange           NaN
3                 banana   NaN

答案 1 :(得分:3)

使用熊猫' NaN的。这些单元格在Excel中将为空(您将能够使用'选择空单元格'命令。您不能使用空字符串执行此操作)。

import numpy as np
df.replace(['None', 'nan'], np.nan, inplace=True)

enter image description here

enter image description here

答案 2 :(得分:3)

您可以将每列与numpy对象dtype(基本上是文本列)进行比较,然后只对这些列进行替换。

for col in df:
    if df[col] == np.dtype('O'):  # Object
        df.col1.replace(['None', 'NaN', np.nan], "", inplace=True)

答案 3 :(得分:1)

所有这些循环解除循环解决方案......

replacers = [None, np.nan, "None", "NaN", "nan"] # and everything else that needs replacing.
df.loc[:, df.dtypes == 'object'].replace(replacers, '', inplace=True)