繁体   English   中英

如何填充 pandas dataframe 中的列作为分组出现的计数

[英]How to populate columns in pandas dataframe as counts of grouped occurences

假设我有以下 pandas dataframe,其中 col_1 只能取值1.00.0

+-------+---------+
| score | col_a   | 
+-------+---------+
|   10  |  1.0    |
|   15  |  0.0    |
|   12  |  0.0    |
|   12  |  0.0    |
+-------+---------+

我想创建以下 dataframe 基本上按分数分组,然后填充col_a = 1.0col_a = 0.0的每个分数的计数

+--------+----------|---------+
| score  |  col_a_1 | col_a_0 |
+--------+----------+---------+
| 10     |    1     |     0   |
| 15     |    0     |     1   |
| 12     |    0     |     2   |
+--------+----------+---------+

我知道这是按操作分组,但我不确定如何将计数填充到新列中。

定义一个 function 计算当前行组中col_a列中01的出现次数:

def cnt(grp):
    n0 = grp.col_a[grp.col_a == 0].size
    n1 = grp.col_a[grp.col_a == 1].size
    return pd.Series([n1, n0], index=['col_a_1', 'col_a_0'])

然后应用这个 function:

df.groupby('score', sort=False).apply(cnt).reset_index()

对于您的样本数据,结果是:

   score  col_a_1  col_a_0
0     10        1        0
1     15        0        1
2     12        0        2

因为你的专栏是二进制的,你可以简单地做

col_a_1 = df.groupby('score').sum() col_a_0 = df.groupby('score').count()- col_a_1 pd.concat([col_a_0.add_suffix('_0'), col_a_1.add_suffix('_1')], axis=1)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM