首页 > 解决方案 > 查找两列的最大值并在第三列中填充值

问题描述

我有一个带有 4 列的 pandas 数据框 - A、B、C、D 和 E。我想按 A 列创建组,然后找到 B 和 C 列的最大值,然后用 D 中存在的相应值填充 E,如图所示下面的例子。

我的预期输出:

column A    column B    column C    column D    Column E
AA         1           a            12          15
AA         2           d            13          15
AA         3           b            14          15
AA         3           e            15          15
BB         1           c            15          17
BB         1           d            16          17
BB         2           b            17          17
BB         2           a            18          17
CC         1           a            11          0
CC         1           c            10          0
CC         1           b            11          0
CC         1           e            15          0

标签: pythonpandasdataframegroup-bypandas-groupby

解决方案


您可以在分组之前对数据框进行排序,然后从 D 列中选择第一个值:

df = df.sort_values(
    by=["column A", "column B", "column C", "column D"],
    ascending=[True, False, False, False],
)

df["Column E"] = df.groupby("column A")["column D"].transform("first")
print(df.sort_index())

印刷:

  column A  column B column C  column D  Column E
0       AA         1        a        12        15
1       AA         2        d        13        15
2       AA         3        b        14        15
3       AA         3        e        15        15
4       BB         1        c        15        17
5       BB         1        d        16        17
6       BB         2        b        17        17
7       BB         2        a        18        17

推荐阅读