如何将Pandas DataFrame列表列元素拆分为单独值用于表合并
Pandas列表列拆分为多行解决方案
- 推荐方案(Pandas 0.25+版本支持):直接使用内置
explode方法,该方法专门用于将列中的列表/序列元素拆分为独立行,其他列的值自动复制对齐。
代码示例:
import pandas as pd # 构造示例df2 df2 = pd.DataFrame({ 'url': [['x','y'], ['x','y']], 'title': ['a', 'b'] }) # 拆分url列的列表为多行 df2_exploded = df2.explode('url', ignore_index=True) print(df2_exploded)
运行输出即为你需要的结构:
url title 0 x a 1 y a 2 x b 3 y b
如果运行时提示ignore_index参数不存在,改为如下写法即可:
df2_exploded = df2.explode('url').reset_index(drop=True)
- 低版本Pandas兼容方案:如果你的Pandas版本低于0.25,没有
explode方法,可以用apply+stack的组合实现相同效果:
df2_exploded = df2.set_index('title')['url']\ .apply(pd.Series)\ .stack()\ .reset_index(level=1, drop=True)\ .reset_index(name='url') # 调整列顺序和原结构对齐 df2_exploded = df2_exploded[['url', 'title']]
- 后续和df1关联操作:拆分完成后直接用
merge方法关联即可补充字段:
# 构造示例df1 df1 = pd.DataFrame({ 'url': ['x','y'], 'name': ['a','b'] }) # 关联两个表,按url匹配 merged_df = pd.merge(df1, df2_exploded, on='url', how='left')
内容的提问来源于stack exchange,提问作者MadMarx17
相关产品推荐
相关产品推荐

