You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python pandas如何将列中1汇总到对应ID分组的首行

你要实现的效果可以通过groupby聚合直接完成,核心逻辑是按ID分组后对X/Y/Z列取最大值(0和1的最大值等价于“该组存在1则返回1,否则返回0”,完全匹配你的需求),无需手动移动数值到首行。

完整实现代码

首先导入依赖并构造测试数据:

import pandas as pd

# 构造和你示例一致的DataFrame
data = {
    "ID": ["A", "A", "A", "B", "B", "B", "B"],
    "X": [1, 0, 1, 0, 1, 0, 1],
    "Y": [0, 0, 0, 1, 0, 0, 0],
    "Z": [0, 1, 0, 0, 0, 1, 0]
}
df = pd.DataFrame(data)

核心聚合逻辑:

# as_index=False 保证ID为普通列而非索引,输出结构和你预期完全一致
end_df = df.groupby("ID", as_index=False).max()

输出验证:

print(end_df)

运行结果:

ID  X  Y  Z
0  A  1  0  1
1  B  1  1  1

通用扩展方案

如果你的X/Y/Z列存在0、1之外的其他数值,仅需要判断该ID下是否出现过1,可以用更严谨的聚合写法:

end_df = df.groupby("ID", as_index=False)[["X", "Y", "Z"]].agg(
    lambda col: int((col == 1).any())
)

内容的提问来源于stack exchange,提问作者Valderas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:15:04