Python按多列压缩行-groupby删除不应该的组?

时间:2019-05-26 13:46:57

标签: python pandas

我尚无法使用随机数据集来重现错误,仅使用数据本身即可。也许您可以帮助我进行复制。

我有一个数据框,其中包含99个以上的类别列和一个可累加列'100_Quantity'。总体而言,> 1Mio行。并非所有可能的列值组合都包含'100_quantity'中的数字,但是原始数据中'100_quantity'中没有NaN。

为了简化起见,我在99列中描述了3个。

这99个中的

3个是['78_SunHours', '8_Country', '9_Region'] 在这99列中,有两个是最重要的['8_Country','9_Region']

我需要按所有列分组并加总'100_Quantity'。因此,将行减少为99个列值的有意义的组合(即df中存在值的地方) 着眼于'8_Country''9_Region',它应该看起来像

*8_Country*,*9_Region*,..., *78_SunHours*, ..., *100_Quantity*
USA, West, ..., 9, ..., 5.5 --- 1 ---
USA, East, ..., 0, ..., 120.6 --- 2 ---
USA, North, ..., 0, ..., 0 --- 3 ---
USA, South, ..., 76, ..., 0.000000001 --- 4 ---

--- 1 ---原始数据中有很多行

--- 2 ---原始数据中有很多行

--- 3 ---多行,总和为零

--- 4 ---多行,几乎总计为零

但是,它返回类似

的内容
*8_Country*,*9_Region*,..., *78_SunHours*, ..., *100_Quantity*
USA, West, ..., 9, ..., 5.5
USA, East, ..., 0, ..., 120.6
-- end --

问题是,尽管我想减少行数,但是某些组的行也被完全删除,我不知道为什么。

例如用另一个工具excel查看数据,仅在['8_Country','9_Region','100_Quantity']返回最后一行。

USA, West, ..., 9, ..., 5.5
USA, East, ..., 0, ..., 120.6
USA, North, ..., 0, ..., 0
USA, South, ..., 76, ..., 0.000000001

注2:我不需要所有带有零的组合。只是来自['8_Country','9_Region']的组合,它们是超过99列的子集-但我仍然需要剩下97列。

我使用了多个groupby语句。我真的无法用较小的数据集重现该行为。

使用excel的数据透视功能,我可以创建结果。从那时起,我知道删除的组(随机!)的结果也较小。

df.groupby([99 columns])['100_Quantity'].sum()

df.groupby([99 columns], as_axis=False, sort=False)['100_Quantity'].sum()

仅查看国家和地区,应该看起来像

*8_Country*,*9_Region*,..., *78_SunHours*, ..., *100_Quantity*
USA, West, ..., 9, ..., 5.5
USA, East, ..., 0, ..., 120.6
USA, North, ..., 0, ..., 0
USA, South, ..., 76, ..., 0.000000001

但是,它返回类似

的内容
*8_Country*,*9_Region*,..., *78_SunHours*, ..., *100_Quantity*
USA, West, ..., 9, ..., 5.5
USA, East, ..., 0, ..., 120.6
-- end --

0 个答案:

没有答案