我有以下表格:
A B C D
75987 1 0 0
75987 1 1 1
75987 2 1 1
75987 2 2 1
75987 2 6 4
75987 1 6 2
75987 1 6 1
59221 2 18 4
59221 1 18 0
59221 2 18 1
我正在尝试根据以下条件创建E列:
- 按A和B列进行分组;
- 当C列小于或等于6时,对应的D列数值相加;
- 将这些相加后的值分配给E列。
我期望E列中的值如下所示:
A B C D E
75987 1 0 0 4
75987 1 1 1 4
75987 2 1 1 6
75987 2 2 1 6
75987 1 6 2 4
75987 1 6 1 4
75987 2 6 4 6
59221 2 18 4 0
59221 1 18 0 0
59221 2 18 1 0
有建议在本论坛上如何实现groupby、布尔索引和.query等方法来解决类似问题,但我似乎无法适应它们以使其按预期工作。例如这里,但我也尝试了很多其他方法。
我的下面的尝试似乎是合乎逻辑的,但我仍然遇到了困难。
df['E'] = np.where(df.groupby(['A','B'])['C'] <= 6, ['D'].transform('sum'))