You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检索DataFrame中列表类型列的元素并实现透视转换

解决方案

可以通过 pandas 的 explode 和 pivot_table 方法组合实现需求,具体步骤如下:

1. 准备示例数据

import pandas as pd

df = pd.DataFrame({
    'name': ['Ash', 'Ray'],
    'fruits': [['banana', 'kiwi'], ['orange', 'kiwi', 'apple']],
    'age': [12, 14]
})

2. 展开列表列并构建透视表

# 展开fruits列的列表,每行对应一个水果
exploded_df = df.explode('fruits')
# 添加值为1的辅助列,用于后续计数
exploded_df['count'] = 1
# 透视表:以name和age为索引,水果为列,填充缺失值为0
result = exploded_df.pivot_table(
    index=['name', 'age'],
    columns='fruits',
    values='count',
    fill_value=0,
    aggfunc='sum'
).reset_index()
# 移除列索引的名称标识,对齐目标格式
result.columns.name = None

print(result)

输出结果

name  age  apple  banana  kiwi  orange
0  Ash   12      0       1     1       0
1  Ray   14      1       0     1       1

关键步骤说明

  • explode('fruits'):将列表类型的列拆分为多行,原数据的每一行会根据列表长度生成对应行数的记录,其他列值保持不变。
  • pivot_table:通过透视实现one-hot编码,aggfunc='sum'确保同一行同一水果的计数正确(这里因每个水果在原列表中仅出现一次,sum和count效果一致),fill_value=0将未出现的水果值填充为0。
  • reset_index():将索引列(name和age)转换为普通列,方便后续使用。

内容的提问来源于stack exchange,提问作者hjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:04:56