[英]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.