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

如何使用pandas按name列分组合并对应数值列内容

Pandas按name分组合并数值的实现方案

你需要的合并逻辑可以通过Pandas的分组聚合功能实现,核心是对beer、soda、water三个数值列取分组最大值,因为0和1的最大值正好满足「只要有任意一行值为1就返回1」的需求,id列按需取分组内任意值即可,示例代码如下:

import pandas as pd

# 你已有的读取文件逻辑
df = pd.read_csv(path, sep='\t', names=["id", "beer", "soda", "water", "name"])

# 分组聚合逻辑
result_df = df.groupby('name', as_index=False).agg(
    # 取分组第一个id,如需随机可替换为 lambda x: x.sample(1).iloc[0]
    id = ('id', 'first'),
    # 数值列取最大值,有1则返回1,全0返回0
    beer = ('beer', 'max'),
    soda = ('soda', 'max'),
    water = ('water', 'max')
)

# 调整列顺序和原始表保持一致
result_df = result_df[['id', 'beer', 'soda', 'water', 'name']]

如果你想让逻辑更直观,也可以用any()判断是否存在1再转整数,和上面的max写法效果完全一致:

result_df = df.groupby('name', as_index=False).agg(
    id = ('id', 'first'),
    beer = ('beer', lambda x: int(x.any())),
    soda = ('soda', lambda x: int(x.any())),
    water = ('water', lambda x: int(x.any()))
)

处理完成后直接把result_df写入目标文件即可得到你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:36:02