Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:分组依据和条件求和并添加回数据帧_Python_Pandas - Fatal编程技术网

Python 熊猫:分组依据和条件求和并添加回数据帧

Python 熊猫:分组依据和条件求和并添加回数据帧,python,pandas,Python,Pandas,我有一个如下所示的数据框: ID Num Letter Count 1 17 D 1 1 12 D 2 1 13 D 3 2 17 D 4 2 12 A 5 2 16 D 1 3 16 D 1 目标是当'Num'为(17或12)且'Letter'为'D'时,将每个'ID'的'Count'值相加,并将计算结果加回到'Total'中的原始数据帧中 以下是

我有一个如下所示的数据框:

ID  Num  Letter  Count
1   17   D       1
1   12   D       2
1   13   D       3
2   17   D       4
2   12   A       5
2   16   D       1
3   16   D       1
目标是当'Num'为(17或12)且'Letter'为'D'时,将每个'ID'的'Count'值相加,并将计算结果加回到'Total'中的原始数据帧中

以下是预期的数据帧:

ID  Num  Letter  Count Total
1   17   D       1     3   
1   12   D       2     3   
1   13   D       3     3 
2   17   D       4     4 
2   12   A       5     4 
2   16   D       1     4
3   16   D       1     0

提前谢谢

思想是将中的不匹配值替换为
0
,然后与
sum
一起使用:

mask = df['Num'].isin([17,12]) & df['Letter'].eq('D')
df['Total'] = df['Count'].where(mask, 0).groupby(df['ID']).transform('sum')
print (df)
   ID  Num Letter  Count  Total
0   1   17      D      1      3
1   1   12      D      2      3
2   1   13      D      3      3
3   2   17      D      4      4
4   2   12      A      5      4
5   2   16      D      1      4
6   3   16      D      1      0