能否用Pandas的groupby对DataFrame列表列的每个元素分组并统计数量?
用groupby实现列表元素的分组统计
要按C列列表中的单个元素分组统计行数,你需要先将列表拆分为单独的行,再进行groupby操作,具体步骤如下:
完整代码示例
import pandas as pd # 构造目标DataFrame data = { 'A': ['CA', 'NY', 'VA'], 'B': ['Jon', 'Sarah', 'Vox'], 'C': [['sales', 'engineering'], ['engineering', 'IT'], ['services', 'engineering']] } df = pd.DataFrame(data) # 拆分列表元素后分组统计 result = df.explode('C').groupby('C').size() # 输出统计结果 print(result)
输出结果
C engineering 3 IT 1 sales 1 services 1 dtype: int64
操作说明
- 拆分列表元素:
df.explode('C')会把C列的每个列表元素拆成独立行,原DataFrame的每行会根据列表长度拆分为多行,其他列的值重复填充。拆分后的中间数据如下:
| A | B | C |
|---|---|---|
| CA | Jon | sales |
| CA | Jon | engineering |
| NY | Sarah | engineering |
| NY | Sarah | IT |
| VA | Vox | services |
| VA | Vox | engineering |
- 分组统计:对拆分后的C列执行
groupby('C').size(),即可按单个元素分组并统计对应的行数。
如果需要转换成你展示的key: value文本格式,可添加以下代码:
for item, count in result.items(): print(f"{item}: {count}")
内容的提问来源于stack exchange,提问作者Manas
相关产品推荐
相关产品推荐

