我基本上有一个数据集,如下所示
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()
这很麻烦,因为它不会将这些值加到正确的分组依据中。但是没有一种真正的方法来分组缺少的东西
另一种方法可能是用一些适合该变量的缺失值分别填充每一列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句