[英]Pandas: groupby then count based on condition gives NaN
我有以下数据集:
+----+------+
| ID | Type |
+----+------+
| a | New |
+----+------+
| b | Old |
+----+------+
| b | Old |
+----+------+
| b | New |
+----+------+
| c | Old |
+----+------+
我正在尝试按 ID 分组,然后计算每个组的New
出现次数。 因此,例如,我将有a=1
、 b=2
和c=0
。
这是我尝试过的:
df['NewAmount'] = df.groupby('ID')['Type'].apply(
lambda x: x[x == 'New'].count())
我明白了:
+----+------+----------+
| ID | Type | NewAmount|
+----+------+----------+
| a | New | NaN |
+----+------+----------+
| b | Old | NaN |
+----+------+----------+
| b | Old | NaN |
+----+------+----------+
| b | New | NaN |
+----+------+----------+
| c | Old | NaN |
+----+------+----------+
您应该尝试使用transform
df['out'] = df['Type'].eq('New').groupby(df['ID']).transform('sum')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.