我有一个包含以下字段的数据帧:
DF:
Key 1, Key 2, Key 3, Key 4, Value 1, Value 2
第 1 步:我想做的是最初对键 1、2、3 和 4 进行分组,并找到值 1 和值 2 的平均值。
第 2 步:我的目标是在对键 1、2 和 3 进行分组时找到值 1 的最大值,因此我随后对键 1、2、3 进行分组并调用最大值。但是,我希望值 2 的值对应于实际最大值 1 结果,这意味着我想保留与最大值关联的原始值 2
。df.groupby(['Key 1', 'Key 2', 'Key 3'], as_index=False).max()
^ 当调用以下内容时,它也只是找到最大值 2,而我真正想要的只是最大值 1 及其相应的值 2。
举个例子:对于带字段的 df
Key1, Key2, Key3, Key4, Value1, Value2:
k1, k2, k3, k4, 30, 10
k1, k2, k3, k4, 20, 20
当从上面使用 groupby 时,这会返回 k1, k2, k3, 30, 20
,而我想要的是k1, k2, k3, 30, 10
关于如何做到这一点的任何想法?
您可以使用 transform
:df['Value1max'] = df.groupby(['Key 1', 'Key 2', 'Key 3'])['Value1'].transform('max')
因此,如果这是您的数据帧:
Key1 Key2 Key3 Key4 Value1 Value2
0 k1 k2 k3 k4 30 10
1 k1 k2 k3 k4 20 20
你会得到这个输出:
Key1 Key2 Key3 Key4 Value1 Value2 Value1max
0 k1 k2 k3 k4 30 10 30
1 k1 k2 k3 k4 20 20 30