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

如何基于已有DataFrame的逗号分隔行值创建新Pandas DataFrame

解决方案:拆分Pandas DataFrame行中的逗号分隔字符串生成子DataFrame

我来帮你搞定这个需求!要把原DataFrame每一行里的逗号分隔字符串拆分成配对的独立行,生成对应的子DataFrame,我们可以用Pandas的字符串处理工具加上简单的循环来实现,具体步骤如下:

1. 先创建示例输入DataFrame

首先我们先还原你给出的输入数据:

import pandas as pd

# 创建输入DataFrame
df = pd.DataFrame({
    "COLUMN_1": ["Marvel", "DC"],
    "COLUMN_2": ["Hulk, Thor, Ironman", "Spiderman, Batman, Flash"],
    "COLUMN_3": ["1,7,8", "18, 74, 88"]
})

2. 定义处理单行的函数

我们写一个函数,接收原DataFrame的一行数据,拆分COLUMN_2和COLUMN_3里的逗号分隔字符串,然后生成对应的子DataFrame:

def split_row_to_df(row):
    # 拆分COLUMN_2,同时去除可能的空格
    column2_vals = [val.strip() for val in row["COLUMN_2"].split(",")]
    # 拆分COLUMN_3,同样去除空格并转为数值类型(可选,根据你的需求调整)
    column3_vals = [int(val.strip()) for val in row["COLUMN_3"].split(",")]
    
    # 创建子DataFrame
    sub_df = pd.DataFrame({
        "COLUMN_1": column2_vals,
        "COLUMN_2": column3_vals
    })
    return sub_df

3. 遍历原DataFrame生成子DataFrames

接下来我们遍历原DataFrame的每一行,调用上面的函数,就能得到你想要的子DataFrames:

# 存储所有子DataFrame的列表(可选,你也可以直接处理每一个子DF)
sub_dfs = []

for idx, row in df.iterrows():
    sub_df = split_row_to_df(row)
    sub_dfs.append(sub_df)
    # 打印每个子DataFrame查看结果
    print(f"第{idx+1}行对应的子DataFrame:")
    print(sub_df)
    print("-"*30)

运行结果

运行上面的代码后,你会得到:

第1行对应的子DataFrame:
COLUMN_1 COLUMN_2
0 Hulk 1
1 Thor 7
2 Ironman 8

第2行对应的子DataFrame:
COLUMN_1 COLUMN_2
0 Spiderman 18
1 Batman 74
2 Flash 88

补充说明

  • 如果COLUMN_3的数值不需要转为整数,可以把int(val.strip())改成val.strip()即可;
  • 如果原DataFrame有更多行,这个方法也能通用,只要确保每一行的COLUMN_2和COLUMN_3的逗号分隔元素数量一致就行;
  • 如果你不想存储所有子DataFrame,也可以在循环里直接对每个子DF进行后续处理(比如保存为CSV、进一步分析等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:11