首页 > 解决方案 > 计算多个熊猫列中的出现次数

问题描述

dg  se
29  10
37  22
3   13
15  7
42  20
31  23
26  17
7   1
36  19
5   7
21  5
37  13
37  6
2   24

在上面的数据框中,我想计算每列值在 0 - 30、30 - 40 和 > 40 之间的出现百分比;以及两列的值介于 0 - 30 和 30 - 40 之间的出现百分比。我正在考虑使用 pandashist函数,但这并不能满足我的要求

标签: pythonpandas

解决方案


用于cut分箱两列:

bins = [0, 30, 40, np.inf]
labels = ['0-30','30-40','40+']
dg = pd.cut(df['dg'], bins=bins, labels = labels, include_lowest=True)
se = pd.cut(df['se'], bins=bins, labels = labels, include_lowest=True)

然后value_counts

dg_per = dg.value_counts(normalize=True)
print (dg_per)
0-30     0.571429
30-40    0.357143
40+      0.071429
Name: dg, dtype: float64

se_per = se.value_counts(normalize=True)
print (se_per)
0-30     1.0
40+      0.0
30-40    0.0
Name: se, dtype: float64

对于两列中的相同值,首先过滤:

both = (dg[dg == se])
print (both.value_counts(normalize=True))
0-30     1.0
40+      0.0
30-40    0.0
Name: dg, dtype: float64

推荐阅读