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

基于ResNum列合并多行并拼接Rate列值的Pandas需求

Pandas实现按ResNum合并行并拼接Rate列值

核心实现思路

  • 以ResNum列为分组依据,将同一组内的Rate列值用竖线|拼接成单个字符串
  • 对包含Name、Nights在内的46列,因同一ResNum对应行的这类字段值通常一致,直接保留每组内的第一个值即可

代码实现步骤

  1. 导入Pandas库
import pandas as pd
  1. 加载电子表格数据(根据实际文件格式调整读取方式)
# Excel格式
df = pd.read_excel('your_data.xlsx')
# CSV格式则替换为:df = pd.read_csv('your_data.csv')
  1. 定义聚合规则并执行分组合并
# 构造聚合规则:Rate列做竖线拼接,其余列取每组第一个值
aggregation_rules = {
    'Rate': lambda x: '|'.join(x.astype(str)),  # 转为字符串避免数值类型拼接报错
    **{col: 'first' for col in df.columns if col not in ['ResNum', 'Rate']}
}

# 按ResNum分组聚合,保留原始列结构
merged_df = df.groupby('ResNum', as_index=False).agg(aggregation_rules)

关键注意事项

  • 如果部分非ResNum、Rate的列在同一ResNum分组内存在不同值,需调整对应列的聚合规则:比如同样用'|'.join拼接,或取众数'mode',具体根据业务需求处理
  • 2万行的数据量属于Pandas常规处理范围,上述方法效率足够,无需额外优化
  • 可提前验证分组内字段的唯一性,排查异常数据:
# 查看各列在分组内的最大不同值数量
unique_counts = df.groupby('ResNum').nunique().max()
print(unique_counts[unique_counts > 1])  # 输出存在多值的列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:04:53