[英]How to populate columns in pandas dataframe as counts of grouped occurences
假设我有以下 pandas dataframe,其中 col_1 只能取值1.0
或0.0
:
+-------+---------+
| score | col_a |
+-------+---------+
| 10 | 1.0 |
| 15 | 0.0 |
| 12 | 0.0 |
| 12 | 0.0 |
+-------+---------+
我想创建以下 dataframe 基本上按分数分组,然后填充col_a = 1.0
或col_a = 0.0
的每个分数的计数
+--------+----------|---------+
| score | col_a_1 | col_a_0 |
+--------+----------+---------+
| 10 | 1 | 0 |
| 15 | 0 | 1 |
| 12 | 0 | 2 |
+--------+----------+---------+
我知道这是按操作分组,但我不确定如何将计数填充到新列中。
定义一个 function 计算当前行组中col_a列中0和1的出现次数:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.