如何高效将Pandas DataFrame指定列按逗号拆分并多行展开?
高效拆分Pandas DataFrame列并展开多行的方案
针对千万级数据集,优先使用Pandas内置的矢量化操作,避免循环或手动拼接,推荐str.split() + explode()的组合,性能最优。
代码示例
- 构造模拟数据集(匹配你的数据结构):
import pandas as pd df = pd.DataFrame({ 'Name': ['bob', 'sally'], 'Categories': ['a,b,c,d', 'b,d,f'] })
- 拆分并展开列:
# 按逗号将Categories列拆分为列表格式 df['Categories'] = df['Categories'].str.split(',') # 将列表型列展开为多行 df_exploded = df.explode('Categories').reset_index(drop=True)
- (可选)实现Name列仅首行显示的格式:
如果需要和你给出的输出格式一致,让重复的Name值显示为空,可添加以下处理:
df_exploded['Name'] = df_exploded['Name'].where(~df_exploded['Name'].duplicated(), '')
方案高效性说明
str.split()是Pandas优化的矢量化字符串方法,比逐行遍历拆分快数十倍;explode()是专门为列表型列展开设计的内置函数,底层用C实现,处理1200万级数据的性能远优于手动构建新DataFrame。
额外处理建议
如果你的Categories列存在空格(比如格式为a, b, c),可以在拆分时同时去除空格:
df['Categories'] = df['Categories'].str.split(',').str.strip()
内容的提问来源于stack exchange,提问作者MahatmaDanG
相关产品推荐
相关产品推荐

