【发布时间】:2020-07-20 07:36:06
【问题描述】:
给定一个数据集df如下:
type module item value input
0 A a item1 2 1
1 A a item2 3 0
2 A aa item3 4 1
3 A aa item4 3 0
4 A aa item5 1 -1
5 B b item1 5 0
6 B b item2 1 -1
7 B bb item3 3 0
8 B bb item4 3 1
9 B bb item5 4 0
我需要根据以下逻辑计算pct 的sum:首先,我们只取value 的input 为0 或1 作为有效值。然后我需要groupbytype, module来计算总和的百分比,例如A-a-item1第一行的pct由2/(2 + 3) = 0.4计算,A-aa-item1由4/(4 + 3) = 0.57计算,不除以@987654335 @ 因为A-aa-item3 的输入值是-1,所以它被排除在外。 df2 中的 sum 列由 groupby type module 然后计算 sum 的总和。
df1:
type module item value input pct
0 A a item1 2 1 0.400000
1 A a item2 3 0 0.000000
2 A aa item1 4 1 0.571429
3 A aa item2 3 0 0.000000
4 A aa item3 1 -1 0.000000
5 B b item1 5 0 0.000000
6 B b item2 1 -1 0.000000
7 B bb item1 3 0 0.000000
8 B bb item2 3 1 0.300000
9 B bb item3 4 0 0.000000
df2:
type module sum
0 A a 0.40
1 A aa 0.57
2 B b 0.00
3 B bb 0.30
如何根据给定的数据集获得类似的结果?谢谢。
【问题讨论】:
-
所以有 2 个掩码 - 首先比较相等
0或1,然后比较1,因此-1, 0的行在pct中设置为0?
标签: python-3.x pandas dataframe pandas-groupby