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

Python Pandas动态合并DataFrame连续多行的实现难题

动态合并CSV中同一ID对应的多行Stock数据(Pandas实现)

核心思路

先把CSV按文本行读取,以ID行作为分组标记,将每个ID对应的所有Stock行归为一组,再把每组的Stock值合并成列表,最后转换为DataFrame——完全适配任意数量的Stock行,不再受固定步长限制。

样例输入(CSV内容)

ID,1001
Stock,AAPL
Stock,MSFT
ID,1002
Stock,GOOG
Stock,AMZN
Stock,TSLA

预期输出

ID               Stock
0  1001        [AAPL, MSFT]
1  1002  [GOOG, AMZN, TSLA]

实现代码

import pandas as pd

# 读取CSV为文本行列表,过滤空行
with open('your_file.csv', 'r') as f:
    lines = [line.strip() for line in f if line.strip()]

# 按ID行分组,自动适配任意数量的Stock行
groups = []
current_group = []
for line in lines:
    if line.startswith('ID,'):
        if current_group:
            groups.append(current_group)
        current_group = [line]
    else:
        current_group.append(line)
# 保存最后一组数据
if current_group:
    groups.append(current_group)

# 处理每组数据,提取ID和合并Stock列表
processed_rows = []
for group in groups:
    # 从ID行提取ID值
    id_value = group[0].split(',')[1]
    # 提取所有Stock值并转为列表
    stocks = [row.split(',')[1] for row in group[1:]]
    processed_rows.append({'ID': id_value, 'Stock': stocks})

# 转换为DataFrame
result_df = pd.DataFrame(processed_rows)
print(result_df)

关键细节说明

  • 分组逻辑:通过判断行是否以ID,开头来切换分组,不管当前ID对应2行还是3行Stock,都会被自动归入同一组,彻底解决固定步长的问题。
  • 灵活适配:如果你的CSV中ID的标识不是ID,(比如用户ID,),只需要修改line.startswith('ID,')里的字符串即可;如果分隔符不是逗号,调整split(',')的参数。
  • 空行处理:读取时过滤了空行,避免分组时出现无效数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:18:20