Pandas中如何将两组配对的列表列按对应关系拆分为多行数据?
实现方法
你需要的是把存储了列表的words和tags列按对应位置拆分为独立行,Pandas的explode方法可以直接实现这个需求:
方法1(Pandas 1.3.0及以上版本,推荐)
支持直接对多列同时执行拆分,代码最简洁:
import pandas as pd # 构造原始DataFrame,如果你已经有df可以跳过这步 data = [ {'id': 1, 'words': ['Φ', '20mm'], 'tags': ['xc', 'PER']}, {'id': 2, 'words': ['Φ', '80mm'], 'tags': ['xc', 'm']}, {'id': 3, 'words': ['EVA'], 'tags': ['nz']}, {'id': 4, 'words': ['Q345'], 'tags': ['nz']} ] df = pd.DataFrame(data) # 核心拆分逻辑,同时拆words和tags列,ignore_index重置行索引 result = df.explode(['words', 'tags'], ignore_index=True)
方法2(兼容低版本Pandas)
如果你的Pandas版本不支持多列同时explode,可以用索引对齐的方式实现:
result = df.set_index('id').apply(pd.Series.explode).reset_index()
两种方法输出的结果都和要求格式完全一致,因为每行的words和tags列表长度一一对应,拆分时会自动按位置匹配,不会出现标签错位的问题。
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

