在Pandas

时间:2016-02-03 01:39:10

标签: python 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参数是动态计算的,而不是固定的(因为列可能会发生变化,但计数总是在那里)。

关于为什么会失败以及如何修复它的任何想法?

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

1 个答案:

答案 0 :(得分:2)

很想在这里得到纠正,但我不确定是否有一种干净的方法来处理丢失的数据。如您所述,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()

这是混乱的,因为它不会将这些值添加到正确的组中以进行求和。但是没有真正的方法来组合缺少的东西

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