查找两列的最大值并在第三列中填充值
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文件的一列中的值填充它