我有一个包含重复列名的数据帧。现在,我正试图使用以下命令将重复的列组合成一列(以下数据帧仅用于演示。它不包含重复的列名,但重复的列名也会出现同样的问题(。
d=pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
d['col2']=d['col2'].astype(str)
d['col1']=np.nan
d=d.groupby(lambda x:x, axis=1).sum(min_count=1)
the output is:
col1 col2
0 0.0 3.0
1 0.0 4.0
但我期待
the output is:
col1 col2
0 Nan 3.0
1 Nan 4.0
我希望,通过使用min_count=1,pandas将在汇总的列都是NaN时返回NaN。但是,现在它返回的是0而不是NaN。知道为什么吗?
这取决于您将min_count设置为1时panda的版本号。如果您有版本<0.22.0,那么当非na值小于1时,您确实会得到np.nan。从0.22.0及更高版本开始,当只有na值时,默认值已更改为0。
文档中也对此进行了解释。