Python 熊猫:groupby然后根据条件进行计数
我有以下数据集:Python 熊猫:groupby然后根据条件进行计数,python,pandas,data-analysis,Python,Pandas,Data Analysis,我有以下数据集: +----+------+ | ID | Type | +----+------+ | a | New | +----+------+ | b | Old | +----+------+ | b | Old | +----+------+ | b | New | +----+------+ | c | Old | +----+------+ 我正在尝试按ID分组,然后计算每个组的新出现次数。例如,我会有a=1,b=2,和c=0 以下是我尝试过的: df['
+----+------+
| ID | Type |
+----+------+
| a | New |
+----+------+
| b | Old |
+----+------+
| b | Old |
+----+------+
| b | New |
+----+------+
| c | Old |
+----+------+
我正在尝试按ID分组,然后计算每个组的新出现次数。例如,我会有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')
谢谢,它起作用了。10分钟后接受吗?你能解释一下为什么你在转换中使用了
sum
而不是count
吗?@mokilliilo因为我使用前面的等式,该项是新的,它将返回True,在groupby之后,我们可以求和它是多少True,它将等于进行计数~