基于指定模式复制Pandas DataFrame中的行
高效拆分DataFrame中含分隔符的行并复制内容
我来帮你搞定这个问题!你需要把DataFrame里最后一列包含分号(;)的行拆分成多行,同时保留其他列的原有内容,pandas里有个非常高效的内置方法——explode(),完全能满足需求,比你尝试的groupby方法简洁太多了。
步骤详解
- 构造原DataFrame(先还原你的示例数据):
import pandas as pd df = pd.DataFrame({ 'A': ['x1', 'x2', 'x3', 'x4'], 'B': ['b1a', 'b1b', 'b1c', 'b1d'], 'C': ['Ak', 'Ak', 'Ak;Lo', 'Lo'] })
- 拆分分隔值为列表:
把最后一列(这里是C列)的字符串按分号拆分成列表格式:
df['C'] = df['C'].str.split(';')
- 展开列表生成多行:
用explode()方法把列表中的每个元素拆分成单独的行,同时自动复制其他列的内容:
df_processed = df.explode('C', ignore_index=True)
处理后的结果
运行上述代码后,打印df_processed会得到你想要的结果:
A B C 0 x1 b1a Ak 1 x2 b1b Ak 2 x3 b1c Ak 3 x3 b1c Lo 4 x4 b1d Lo
为什么这个方法高效?
explode()是pandas优化过的向量化操作,不需要手动写循环或者复杂的分组逻辑,处理大规模数据时的性能远优于自定义的拆分方法。如果你的DataFrame最后一列不是C,只需要把代码里的列名替换成实际列名即可。
内容的提问来源于stack exchange,提问作者Sos
相关产品推荐
相关产品推荐

