查找两列的最大值并在第三列中填充值

Posted

技术标签:

【中文标题】查找两列的最大值并在第三列中填充值【英文标题】:Find max of two columns and populate with value in third column 【发布时间】:2021-09-18 05:02:53 【问题描述】:

我有一个带有 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

【问题讨论】:

【参考方案1】:

您可以在分组之前对数据框进行排序,然后从 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

【讨论】:

非常感谢。这真的是快速简单的修复!它就像一个魅力。 实际问题是因为我申请填充列 E 的 if 条件。我正在更新问题,请您看看我的代码做错了什么并建议我如何更改它?谢谢你,很抱歉造成混乱。 @PushpaGadde 我建议恢复您问题的最后更改并在 *** 上创建一个新问题。我会试着看看它。 ***.com/questions/68290913/… @Andrej Kesely - 添加了新问题。感谢您的帮助。

以上是关于查找两列的最大值并在第三列中填充值的主要内容,如果未能解决你的问题,请参考以下文章

按两列分组并获得第三列的最大值

使用pandas创建稀疏矩阵,并使用来自.dat文件的其他两列的索引[x,y]的.dat文件的一列中的值填充它

在SQL中,如何将两列的数据相乘以获得第三列

如何对两列求和并通过减去它们的聚合 SQL 和 C# 在第三列中显示结果?

将整列加上另一列的单行相加并显示在第三列中

sql选择某一列的最大值与最小值并在同一列中显示