如何用Pandas explode列并为复制行设置指定列值
实现思路与代码示例
核心思路
先对Col1执行explode拆分列表列,再区分拆分后的第一行和后续复制行:第一行保留原Col2的值,其余行替换为指定值z。
分步实现
- 构造示例数据
import pandas as pd df = pd.DataFrame({ 'Col1': [['A', 'B', 'C']], 'Col2': ['x'], 'Col3': ['y'] })
- 执行explode拆分
df_exploded = df.explode('Col1').reset_index(drop=True)
- 更新Col2列的值
如果只有单条原始数据,直接通过索引判断即可:
df_exploded['Col2'] = ['x'] + ['z']*(len(df_exploded)-1)
如果是多条原始数据的通用场景,需要先标记原始行分组,再批量替换:
# 给原始行添加唯一标识 df['original_id'] = df.index # 拆分后按原始标识分组 df_exploded = df.explode('Col1') # 组内第一行保留原Col2,其余替换为z df_exploded['Col2'] = df_exploded.groupby('original_id').apply( lambda g: g['Col2'].iloc[0] if g.name == g.index[0] else 'z' ).reset_index(level=0, drop=True) # 删除辅助列 df_exploded = df_exploded.drop('original_id', axis=1).reset_index(drop=True)
最终输出
| Col1 | Col2 | Col3 |
|---|---|---|
| A | x | y |
| B | z | y |
| C | z | y |
内容的提问来源于stack exchange,提问作者Mathieu
相关产品推荐
相关产品推荐

