python - 查找两列的最大值并在第三列中填充值
问题描述
我有一个带有 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
解决方案
您可以在分组之前对数据框进行排序,然后从 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
推荐阅读
- azure-aks - 创建 nginx 入口控制器时是否需要 Azure 默认 AKS 负载均衡器
- r - 如何根据存储在 tibble 中的数据执行未知数量的函数调用/“管道”?
- html - 如何在 django 模板中对齐价格的小数点?
- airflow-scheduler - 将作业添加到现有 Airflow DAG,而不依赖于任何作业
- javascript - Google Pay API 与 Woocommerce 的集成
- php - 在 PHP中删除
标签 - regex - 正则表达式选择两个之间的单词
- python - ImportError:没有名为 pygame 的模块,你如何在 mac 上解决这个问题?
- ruby-on-rails - Sidekiq 查询作业完成
- ssl - PEM_read_bio_X509_AUX() 失败(SSL:错误:0909006C:PEM 例程:get_name:无起始行:期望:受信任的证书)