Python/Pandas新手求助:如何从单个DataFrame生成目标输出?
解决方法:拆分DataFrame中逗号分隔列并展开成多行
直接针对你的示例数据给出实操代码,用Pandas就能轻松实现需求:
首先构造示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'column 1': ['AAA', 'AAB', 'AAC'], 'column 2': ['CA_1,CA_2', 'CA_1,CA_3', 'CA_2,CA_3'], 'column 3': [10, 20, 30] })
执行拆分展开操作:
# 将column2的逗号分隔字符串拆成列表 df['column 2'] = df['column 2'].str.split(',') # 把列表列展开为多行,其余列自动复制对应值 result = df.explode('column 2', ignore_index=True)
最终得到的result就是预期的展开后数据:
| column 1 | column 2 | column 3 |
|---|---|---|
| AAA | CA_1 | 10 |
| AAA | CA_2 | 10 |
| AAB | CA_1 | 20 |
| AAB | CA_3 | 20 |
| AAC | CA_2 | 30 |
| AAC | CA_3 | 30 |
关键步骤说明
str.split(','):把column 2里的字符串按逗号分割成列表,比如'CA_1,CA_2'转为['CA_1','CA_2']explode():将包含列表的列拆分成独立行,其他列的对应值会自动匹配复制;ignore_index=True用于重置结果的索引,避免原索引重复
如果你的实际数据中column 2的逗号后带空格(比如CA_1, CA_2),可以把split语句改成str.split(',\s*'),自动忽略逗号后的空格。
内容的提问来源于stack exchange,提问作者DEB
相关产品推荐
相关产品推荐

