Pandas groupby().sum() 没有忽略 None/empty/np.nan 值
Pandas groupby().sum() is not ignoring None/empty/np.nan values
我和 Pandas groupby().sum()
一起遇到了一个奇怪的问题。
我有一个包含 2 个类别列和 3 个 numeric/float
值列的 DF - 值列有 None
s,如下所示:
cat_1 cat_2 val_1 val_2 val_3
0 b z 0.1 NaN NaN
1 b x 0.1 NaN NaN
2 c y 0.1 1.0 NaN
3 c z 0.1 NaN NaN
4 c x 0.1 1.0 NaN
我想 group-by cat_1
然后 sum 值列:val_1
, val_2
和 val_3
每个类别。
最终聚合应该是这样的:
cat_1 val_1 val_2 val_3
0 b 0.2 NaN NaN
1 c 0.3 2.0 NaN
问题: 是当我执行 df.groupby(["cat_1"], as_index=False).sum()
时,对于所有值为 None/null
:[=25 的类别,我得到 0.0
=]
cat_1 val_1 val_2 val_3
0 b 0.2 0.0 0.0
1 c 0.3 2.0 0.0
我该如何解决这个问题?谢谢。
似乎没有像通过 DataFrame.sum(skipna=False)
那样直接的方法,但它没有为 groupby-sum 实现。但是,如 ScootCork mentioned, the required behaviour can be achieved using: groupby().sum(min_count=1)
- from documentation.
我和 Pandas groupby().sum()
一起遇到了一个奇怪的问题。
我有一个包含 2 个类别列和 3 个 numeric/float
值列的 DF - 值列有 None
s,如下所示:
cat_1 cat_2 val_1 val_2 val_3
0 b z 0.1 NaN NaN
1 b x 0.1 NaN NaN
2 c y 0.1 1.0 NaN
3 c z 0.1 NaN NaN
4 c x 0.1 1.0 NaN
我想 group-by cat_1
然后 sum 值列:val_1
, val_2
和 val_3
每个类别。
最终聚合应该是这样的:
cat_1 val_1 val_2 val_3
0 b 0.2 NaN NaN
1 c 0.3 2.0 NaN
问题: 是当我执行 df.groupby(["cat_1"], as_index=False).sum()
时,对于所有值为 None/null
:[=25 的类别,我得到 0.0
=]
cat_1 val_1 val_2 val_3
0 b 0.2 0.0 0.0
1 c 0.3 2.0 0.0
我该如何解决这个问题?谢谢。
似乎没有像通过 DataFrame.sum(skipna=False)
那样直接的方法,但它没有为 groupby-sum 实现。但是,如 ScootCork mentioned, the required behaviour can be achieved using: groupby().sum(min_count=1)
- from documentation.