如何保留我不想分组的数据框中的某些字段?



我有一个包含以下字段的数据帧:

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

最新更新