我有这个:
IDS CR_EARNED TYPE TOT_ALL_TYPES
001 3 A 7
001 3 A 7
001 1 B 7
002 3 A 6
002 3 A 6
003 2 C 8
003 4 C 8
003 2 A 8
TOT_ALL_TYPES 是我创建的一个列,用于通过执行以下操作对每个 ID 的 CR_EARNED 的所有 TYPE 求和:
df['TOT_ALL_TYPES'] = df['CR_EARNED'].groupby(df['IDS']).transform('sum')
接下来,我想创建一个新列,它将按 ID 对 CR_EARNED 求和,其中 TYPE = A 或 B。结果如下所示:
IDS CR_EARNED TYPE TOT_ALL_TYPES TOT_AB
001 3 A 7 7
001 3 A 7 7
001 1 B 7 7
002 3 C 6 3
002 3 A 6 3
003 2 C 8 2
003 4 C 8 2
003 2 A 8 2
我该怎么做?
请您参考如下方法:
国际联合会
你可以使用where
df['CR_EARNED'].where(df.TYPE.isin(['A','B']),0).groupby(df['IDS']).transform('sum')
Out[887]:
0 7
1 7
2 7
3 6
4 6
5 2
6 2
7 2
Name: CR_EARNED, dtype: int64
更多信息
df['CR_EARNED'].where(df.TYPE.isin(['A','B']),0)
Out[890]:
0 3
1 3
2 1
3 3
4 3
5 0
6 0
7 2
Name: CR_EARNED, dtype: int64
