我尚无法使用随机数据集来重现错误,仅使用数据本身即可。也许您可以帮助我进行复制。
我有一个数据框,其中包含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 --