根据具有相同组 ID

时间:2021-05-10 16:57:29

标签: python pandas

我有一个包含 group_idvaluesize 的 Pandas 数据框,例如:

<头>
group_id 价值 尺寸
0 10 1
0 10 3
1 5 2
2 6 4

具有相同 group_id 的行也具有相同的 value

我想根据大小“分配”同一组内条目的值。例如,第一行应该更新为 value = 10 * 1 / (1 + 3) = 2.5,而第二行应该更新为 value = 10 * 3 / (1+3) = 7.5,并且其余条目不应更改(因为其组中没有其他行)。

我尝试使用 groupby 构造迭代具有相同 group_id 的组,但从那里我有点迷失了。我想如果我能得到一个组的行的索引,我就可以对原始数据帧进行切片并依次操作每个组。但我不知道该怎么做,也不知道这是否是最 Pythonic 的方式。

1 个答案:

答案 0 :(得分:1)

将值和大小相乘,然后在大小列上除以 groupby.transform

df['value'].mul(df['size']).div(df.groupby("group_id")['size'].transform('sum'))

0    2.5
1    7.5
2    5.0
3    6.0
dtype: float64

根据您的要求将其分配给新列或替换现有列

相关问题