Pandas的groupby().sum()没有忽略None/空值/np.nan值。

3

我在使用Pandas的groupby().sum()时遇到了一个奇怪的问题。

我有一个DF,其中包含2个类别列和3个numeric/float值列 - 值列如下所示包含None

  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

我想要按照 cat_1 进行分组,然后对每个类别的 val_1val_2val_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的类别,我会得到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

我该如何解决这个问题?谢谢。


2
min_count=1 应该可以工作。请参考 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sum.html。 - ScootCork
是的,那是真的。它可以用那个工作。然而,有没有更好、更直接的方法来做呢? - user3557405
2
我猜 skipna=False 可以工作,但是它在 GroupBy.sum 中没有被实现。 - ScootCork
1个回答

2

似乎没有像DataFrame.sum(skipna=False)那样直接的方法,但是对于groupby-sum未实现。然而,正如ScootCork所提到的,可以使用以下方式实现所需的行为: groupby().sum(min_count=1) - 来自文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接