对 pandas 数据帧使用 to_excel(...) 函数时,如何区分空字符串 np.nan 和 None?
How to separate between empty string, np.nan and None when using to_excel(...) function for pandas dataframe?
构建包含 np.nan
、None
和空字符串 (''
) 值的数据框 df
后 Python 3.8.3 和 Pandas 1.0.4
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'b':None,'c':''},index=[0])
df2 = pd.DataFrame({'a':1,'b':1,'c':None},index=[0])
df = pd.concat([df1,df2], axis=0, sort=True)
print(df)
数据框df
看起来像
a b c
0 NaN None
0 1.0 1 None
现在我想使用 to_excel()
函数将值存储到 Excel。但是,在 运行 命令之后
df.to_excel('nan_none_empty.xlsx')
结果看起来像
与 np.nan
、None
和空字符串 (''
) 不可分离。
可以使用选项 na_rep
将空字符串 (''
) 与 np.nan
和 None
分开,如下所示
df.to_excel('nan_none_empty2.xlsx',na_rep='?')
给出结果
但似乎,对于这个问题,我 运行 在 options for to_excel(...) function 之外,以便能够在 Excel 导出。
在将 df
导出到 Excel 时,如何将 np.nan
和 None
整齐地分开?
如果您想区分不同的 null 类型,最好的办法是在 导出到 Excel 之前替换值 。转换为字符串是确保您不会混淆 None、np.NaN、pd.NaT 等的一种方法...
df1 = pd.DataFrame({'b':None,'c':''},index=[0])
df2 = pd.DataFrame({'a':1,'b':1,'c':None},index=[0])
df = pd.concat([df1,df2], axis=0, sort=True)
null_map = {'nan': '-',
'None': '?'} # Add the string representation for other types you may need
df = df.applymap(lambda x:
null_map[str(x)]
if str(x) in null_map
else x)
df.to_excel('nan_none_empty2.xlsx')
这样的怎么样?:
df = df.applymap(lambda x: str(x) if x in [None, ''] else x)
df.to_excel('nan_none_empty.xlsx',na_rep='np.nan')
构建包含 np.nan
、None
和空字符串 (''
) 值的数据框 df
后 Python 3.8.3 和 Pandas 1.0.4
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'b':None,'c':''},index=[0])
df2 = pd.DataFrame({'a':1,'b':1,'c':None},index=[0])
df = pd.concat([df1,df2], axis=0, sort=True)
print(df)
数据框df
看起来像
a b c
0 NaN None
0 1.0 1 None
现在我想使用 to_excel()
函数将值存储到 Excel。但是,在 运行 命令之后
df.to_excel('nan_none_empty.xlsx')
结果看起来像
与 np.nan
、None
和空字符串 (''
) 不可分离。
可以使用选项 na_rep
将空字符串 (''
) 与 np.nan
和 None
分开,如下所示
df.to_excel('nan_none_empty2.xlsx',na_rep='?')
给出结果
但似乎,对于这个问题,我 运行 在 options for to_excel(...) function 之外,以便能够在 Excel 导出。
在将 df
导出到 Excel 时,如何将 np.nan
和 None
整齐地分开?
如果您想区分不同的 null 类型,最好的办法是在 导出到 Excel 之前替换值 。转换为字符串是确保您不会混淆 None、np.NaN、pd.NaT 等的一种方法...
df1 = pd.DataFrame({'b':None,'c':''},index=[0])
df2 = pd.DataFrame({'a':1,'b':1,'c':None},index=[0])
df = pd.concat([df1,df2], axis=0, sort=True)
null_map = {'nan': '-',
'None': '?'} # Add the string representation for other types you may need
df = df.applymap(lambda x:
null_map[str(x)]
if str(x) in null_map
else x)
df.to_excel('nan_none_empty2.xlsx')
这样的怎么样?:
df = df.applymap(lambda x: str(x) if x in [None, ''] else x)
df.to_excel('nan_none_empty.xlsx',na_rep='np.nan')