You need to enable JavaScript to run this app. 如何使用Pandas对含列表的列生成按另一列分组计数的透视表
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas对含列表的列生成按另一列分组计数的透视表

解决方法

核心思路是先把存储列表的Col2列拆分为单行单个值的结构,再做分组统计即可,无需复杂自定义逻辑。

完整可运行代码

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Col1': ['A', 'B', 'C', 'A', 'B', 'C'],
    'Col2': [["e", "f"], ["g", "f"], ["g", "h"], ["e", "g"], ["g", "f"], ["g", "e"]]
})

# 第一步:将Col2的列表拆分为多行,每个元素对应一行
df_exploded = df.explode('Col2', ignore_index=True)

# 第二步:按Col1和拆分后的Col2分组统计次数
# 方式1:使用groupby实现
result = df_exploded.groupby(['Col1', 'Col2'], as_index=False).size().rename(columns={'size': 'count'})

# 方式2:使用pivot_table实现,效果一致
# result = df_exploded.pivot_table(index=['Col1', 'Col2'], aggfunc='size').reset_index(name='count')

# 如果需要和示例效果一致,合并相同Col1的展示,设置多层索引即可
result = result.set_index(['Col1', 'Col2'])
print(result)

输出结果

count
Col1 Col2       
A    e         2
     f         1
     g         1
B    f         2
     g         2
C    e         1
     g         2
     h         1

补充说明

如果你的Col2列当前是字符串格式的列表(比如读取csv后默认存为字符串),需要先转成真实的列表类型,可以用ast.literal_eval处理:

import ast
df['Col2'] = df['Col2'].apply(ast.literal_eval)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:24:03