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

如何在Pandas中实现列值重复并正确拆分Connections列内容

解决DataFrame中列值重复与Connections列正确拆分的问题

嘿,我明白你遇到的问题了——用list()处理字符串的时候,它会把每个字符都拆出来,而不是按你想要的逗号分隔,对吧?咱们来一步步解决这个问题。

首先,先回顾下你的输入数据:

import pandas as pd
dfno = pd.DataFrame({'Nodes':['A','B','C'], 'Connections': ['Za,Eb', 'Qa,Rb', 'La,Mb']})

问题根源

你之前用list(str(row['Connections'])),比如处理"Za,Eb"时,会把它拆成['Z','a',',','E','b'],这显然不是你要的。正确的拆分方式应该是用字符串的split(',')方法,按逗号分割成子字符串列表。

推荐方法:用Pandas原生函数高效实现

Pandas有专门的函数来处理这种“把列表拆成多行”的需求,代码简洁又高效,完全不用手动循环:

# 第一步:把Connections列按逗号拆分为列表
dfno['Connections'] = dfno['Connections'].str.split(',')
# 第二步:将列表展开为多行,自动重复对应的Nodes值
result_df = dfno.explode('Connections')

运行后你会得到想要的结果:

Nodes Connections
0     A          Za
0     A          Eb
1     B          Qa
1     B          Rb
2     C          La
2     C          Mb

这个方法的优势在于:str.split(',')会精准地把每个Connections字符串拆成包含两个元素的列表(比如"Za,Eb"变成["Za", "Eb"]),然后explode函数会自动把列表中的每个元素拆成单独的行,同时保持Nodes列的值和原行一致,完美匹配你的需求。

如果你坚持要用循环实现(不推荐大数据量)

如果因为某些原因你需要用循环的方式,那只需要把list()换成split(','),然后遍历拆分后的列表,把每一组节点和连接存入新列表,最后转成DataFrame:

result_rows = []
for _, row in dfno.iterrows():
    node = row['Nodes']
    # 用split(',')替代list(),按逗号拆分
    connections = row['Connections'].split(',')
    for conn in connections:
        result_rows.append({'Nodes': node, 'Connections': conn})

result_df = pd.DataFrame(result_rows)

不过要注意,iterrows()在处理大型DataFrame时效率很低,所以优先推荐第一种原生方法哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:37:47