在使用数据框的to_excel(…)函数时,如何区分空字符串、np.nan和None?

2024-04-29 11:01:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python 3.8.3和1.0.4中构造包含np.nanNone和空字符串('')值的数据帧df之后

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')

结果看起来很像

excel_picture

np.nanNone和空字符串('')不可分离

可以使用选项na_rep将空字符串('')与np.nanNone分开,如下所示

df.to_excel('nan_none_empty2.xlsx',na_rep='?')

给出结果

enter image description here

但是,对于这个问题,为了能够在Excel导出中分离np.nanNone,我似乎用完了options for to_excel(...) function

在将df导出到Excel时,如何在np.nanNone之间整齐地分开


Tags: to数据字符串importnonedataframedfindex
2条回答

像这样的怎么样

df = df.applymap(lambda x: str(x) if x in [None, ''] else x)
df.to_excel('nan_none_empty.xlsx',na_rep='np.nan')

如果要区分不同的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')

相关问题 更多 >