当Min_count=1时,Groupby Sum等于0



我有一个包含重复列名的数据帧。现在,我正试图使用以下命令将重复的列组合成一列(以下数据帧仅用于演示。它不包含重复的列名,但重复的列名也会出现同样的问题(。

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。

文档中也对此进行了解释。

最新更新