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

如何在Pandas列中统计含多值单元格的元素出现次数

问题说明

我有一个Pandas DataFrame,其中包含名为specialty的列,数据如下:

0         1,5
1           1
2           1
3           1
4           1
5         1,5
6           3
7           3
8           1
9         1,3
10          1
11    1,2,4,6

需要实现的统计逻辑:

  • 单元格包含多个值(逗号分隔)时,既要将该行计入数字7的统计(代表多值行数量),也要将单元格内每个数字分别累加到对应数字的总次数中
  • 最终需输出各数字的出现次数及占比

期望输出(次数部分):

1: 10
2: 1
3: 3
4: 1
5: 2
6: 1
7: 4

当前代码仅将多值单元格转为7统计,未实现各数字累加:

# Convert specialties with more than 1 to item 7 (multiple)
part_chars['specialty'] = np.where(part_chars['specialty'].str.len() > 1, 7, part_chars['specialty'])

counts = part_chars.specialty.value_counts()
percs = part_chars.specialty.value_counts(normalize=True)*100
pd.concat([counts,percs], axis=1, keys=['count', 'percentage'])

该代码输出:

count    percentage
7   213     40.804598
1   211     40.421456
3   39      7.471264
5   23      4.406130
6   13      2.490421
4   12      2.298851
2   11      2.107280

解决方案

可以分三步实现需求:拆分多值单元格统计数字次数、统计多值行数量、合并结果并计算占比。

步骤1:拆分多值单元格并统计各数字次数

将specialty列按逗号拆分后展开为多行,再统计每个数字的出现次数:

import pandas as pd

# 示例数据(替换为你的DataFrame)
data = {'specialty': ['1,5', '1', '1', '1', '1', '1,5', '3', '3', '1', '1,3', '1', '1,2,4,6']}
part_chars = pd.DataFrame(data)

# 拆分多值单元格并展开为单行
split_series = part_chars['specialty'].str.split(',', expand=True).stack().reset_index(drop=True)
# 统计各数字出现次数
num_counts = split_series.value_counts().astype(int)

步骤2:统计多值行数量(对应数字7)

判断每行是否包含多个值,统计这类行的总数:

# 统计包含逗号的行(即多值行)的数量
multi_row_count = part_chars['specialty'].str.contains(',').sum()
# 转为Series,索引设为'7'
multi_counts = pd.Series([multi_row_count], index=['7'], name='count')

步骤3:合并结果并计算占比

将两部分统计结果合并,再计算每个值的占比(占所有统计项总次数的比例):

# 合并统计结果并按索引排序
final_stats = pd.concat([num_counts, multi_counts]).sort_index().to_frame(name='count')
# 计算占比并保留两位小数
final_stats['percentage'] = (final_stats['count'] / final_stats['count'].sum()) * 100
final_stats['percentage'] = final_stats['percentage'].round(2)

# 输出结果
print(final_stats)

示例数据运行结果

count  percentage
1     10       45.45
2      1        4.55
3      3       13.64
4      1        4.55
5      2        9.09
6      1        4.55
7      4       18.18

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:57:45