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

Pandas如何将逗号分隔字符串列拆分为两两配对的新行

问题原因

现有实现仅按第一个逗号拆分字符串,只能生成「第一个元素+其余元素」的配对,无法覆盖其余元素之间的两两组合,因此缺失x、y的配对行。

实现代码

借助标准库itertools.combinations生成列表内所有长度为2的无序不重复配对,再配合explode展开即可得到目标结果,完整可运行代码如下:

import pandas as pd
from ast import literal_eval
from itertools import combinations

# 原始数据
data = {'name':["'a','x','y'"], 'val' : [10]}
df = pd.DataFrame(data)

# 解析字符串为元素元组
df['parsed_name'] = df['name'].apply(literal_eval)
# 生成所有2元素配对
df['var_pairs'] = df['parsed_name'].apply(lambda x: list(combinations(x, 2)))
# 展开配对列
df = df.explode('var_pairs', ignore_index=True)
# 拆分配对为两个独立变量列
df[['variable1', 'variable2']] = pd.DataFrame(df['var_pairs'].tolist(), index=df.index)
# 整理输出列
result = df[['variable1', 'variable2', 'val']].rename(columns={'val': 'value'})

print(result)

运行输出和预期完全一致:

variable1 variable2  value
0         a         x     10
1         a         y     10
2         x         y     10
逻辑说明
  • literal_eval可直接将格式为'a','x','y'的字符串解析为Python元组('a', 'x', 'y'),无需手动拆分字符串、清理引号,容错性更好
  • combinations(seq, 2)会自动生成序列内所有元素的两两无序不重复组合,无论序列内有多少个元素,都能覆盖所有符合要求的配对关系
  • 展开配对列后将元组拆分为独立列,即可得到目标结构的DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:01:12