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

如何在Pandas中将同一编号对应的两行数据合并为一行?

解决DataFrame按分组合并指定行的问题

没问题,我来帮你搞定这个DataFrame的合并需求!根据你的数据结构,我们可以用Pandas的pivot或者groupby方法轻松实现目标格式,下面是具体的步骤和代码:

步骤1:构造示例DataFrame

首先我们先还原你的原始数据:

import pandas as pd

df = pd.DataFrame({
    'no': [1121, 1121, 3612, 3612],
    'frc': [1, 0, 1, 0],
    'val': ["John", 236, "Mary", 545]
})

方法1:使用pivot快速重塑数据

这个方法最简洁,适合这种明确的"分组-对应列"场景:

# 按no分组,将frc的1和0转为列,对应val的值
pivoted_df = df.pivot(index='no', columns='frc', values='val').reset_index(drop=True)

# 格式化为你需要的字符串输出
output = pivoted_df.apply(lambda row: f'"{row[1]}",{row[0]}', axis=1)

# 打印结果(去掉索引)
print(output.to_string(index=False))

运行后会输出:

"John",236
"Mary",545

方法2:使用groupby自定义聚合

如果你的数据有更复杂的逻辑,用groupby自定义聚合函数会更灵活:

def combine_rows(group):
    # 提取分组内frc=1的val(姓名)
    name = group[group['frc'] == 1]['val'].iloc[0]
    # 提取分组内frc=0的val(数字)
    num = group[group['frc'] == 0]['val'].iloc[0]
    # 返回指定格式的字符串
    return f'"{name}",{num}'

# 按no分组并应用自定义函数
result = df.groupby('no').apply(combine_rows).reset_index(drop=True)

# 打印结果
print(result.to_string(index=False))

这个方法和上面的输出结果完全一致,适合需要额外处理逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:18:36