如何将Pandas指定列按分号拆分为多行,其余列保留对应格式
问题:拆分DataFrame多值列并保留其他列仅首行显示
原始DataFrame:
| Sl No. | description1 | description2 |
|---|---|---|
| 1 | dog;lion;tiger | sentence1 |
| 2 | cat;pet;elephant | sentence2 |
期望输出:
| Sl No. | description1 | description2 |
|---|---|---|
| 1 | dog | sentence1 |
| lion | ||
| tiger | ||
| 2 | cat | sentence2 |
| pet | ||
| elephant |
解决方案
先用explode展开多值列,再通过标记重复行隐藏重复的Sl No.和description2值即可:
步骤1:创建示例DataFrame
import pandas as pd df = pd.DataFrame({ 'Sl No.': [1, 2], 'description1': ['dog;lion;tiger', 'cat;pet;elephant'], 'description2': ['sentence1', 'sentence2'] })
步骤2:拆分并展开多值列
# 将description1按分号拆分为列表,再展开成多行 df_exploded = df.assign(description1=df['description1'].str.split(';')).explode('description1')
步骤3:处理重复列值
# 仅保留每组第一行的Sl No.值,其余行设为空字符串 df_exploded['Sl No.'] = df_exploded['Sl No.'].mask(df_exploded.duplicated('Sl No.'), '') # 仅保留每组第一行的description2值,其余行设为空字符串 df_exploded['description2'] = df_exploded['description2'].mask(df_exploded.duplicated('Sl No.'), '')
最终结果
运行后df_exploded即为期望格式:
Sl No. description1 description2 0 1 dog sentence1 0 lion 0 tiger 1 2 cat sentence2 1 pet 1 elephant
内容的提问来源于stack exchange,提问作者Animesh panda
相关产品推荐
相关产品推荐

