繁体   English   中英

按熊猫中的许多列分组

[英]Grouping by many columns in Pandas

我基本上有一个数据集,如下所示

Col1  Col2  Col3  Count
A      B     1      50
A      B     1      50
A      C     20     1
A      D     17     2
A      E     5      70
A      E     15     20

假设它称为数据。 我基本上是做data.groupby(by=['Col1', 'Col2', 'Col3'], as_index=False, sort=False).sum() ,这应该给我这样:

Col1  Col2  Col3  Count
A      B     1      100
A      C     20     1
A      D     17     2
A      E     5      70
A      E     15     20

但是,这将返回一个空的数据集,该数据集确实具有我想要的列,但没有行。 唯一的警告是by参数是动态计算的,而不是固定计算的(那是因为列可能会更改,尽管Count始终会存在)。

关于为什么会失败以及如何解决的任何想法?

编辑:进一步的搜索显示,pandas的groupby删除了在任何列上具有NULL的行。 这对我来说是个问题,因为每一列都可能为NULL。 因此,实际的问题是:处理NULL并仍使用groupby的任何合理方法?

很想在这里进行更正,但是我不确定是否有一种干净的方法来处理丢失的数据。 如您所述,Pandas只会从groupby中排除包含NaN值的行

您可以用超出数据范围的值来填充NaN值:

data = pd.read_csv("c:/Users/simon/Desktop/data.csv")

data.fillna(-999, inplace=True)

new = data.groupby(by=['Col1', 'Col2', 'Col3'], as_index=False, sort=False).sum()

这很麻烦,因为它不会将这些值加到正确的组中进行求和。 但是没有一种真正的方法来分组缺少的东西

另一种方法可能是用一些适合该变量的缺失值分别填充每一列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM