Python3 Pandas如何按分隔符拆分列并逆透视保留其余指定列
Pandas 按分隔符拆分列为多行并保留指定列的实现方案
以下两种实现方式均无需使用merge操作,可直接得到目标结果:
方法1:高版本Pandas(≥0.25)最简实现
使用内置explode方法完成展开,逻辑最简洁:
import pandas as pd import numpy as np # 构造示例数据 data = np.array(['a0','a1,a2','a2,a3']) pk = np.array([1,2,3]) df = pd.DataFrame({'data': data, 'PK': pk}) # 核心逻辑:先拆分列为列表,再展开列表为多行 result = df.assign(data=df['data'].str.split(',')).explode('data').reset_index(drop=True) # 调整列名与顺序匹配需求 result = result.rename(columns={'PK': 'pk'})[['data', 'pk']]
输出结果完全符合要求:
data pk 0 a0 1 1 a1 2 2 a2 2 3 a2 3 4 a3 3
方法2:低版本Pandas兼容实现
如果使用的Pandas版本不支持explode,可以用set_index+stack的组合实现:
# 示例数据构造同上 res = df.set_index('PK')['data']\ .str.split(',', expand=True)\ .stack()\ .reset_index(level=0, name='data')\ .reset_index(drop=True) # 调整列名和顺序 res = res.rename(columns={'PK': 'pk'})[['data', 'pk']]
内容的提问来源于stack exchange,提问作者Mohsen Sichani
相关产品推荐
相关产品推荐

