我的数据框中散布着"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
知道如何解决这个问题吗?
谢谢,
答案 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)
答案 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)