条件后的groupby计数 - python

问题描述 投票:0回答:1

我正在尝试对 pandas df 中的特定列执行 groupby sum。但我只想在某个阈值之后执行 count 。对于本示例,它将位于

 B > 2

groupby 在 A 上,count 在 C 上。正确的输出应该是:

x = 3

y = 9

df = pd.DataFrame(dict(A=list('ababaa'), B=[1, 1, 3, 4, 5, 6], C=[9, 9, 0, 9, 1, 2]))

df.loc[(df['B'] > 2), 'Count'] = df.groupby('A')['C'].transform('sum')

df['Count'] = df['Count'].replace(np.NaN, 0).astype(int)

出:

   A  B  C  Count
0  x  1  9      0
1  y  1  9      0
2  x  3  0     12 *3
3  y  4  9     18 *9
4  x  5  1     12 *3
5  x  6  2     12 *3
python pandas
1个回答
0
投票

用途:

m = df['B'] > 2
df.loc[m, 'Count'] = df[m].groupby('A')['C'].transform('sum')
df['Count'] = df['Count'].replace(np.NaN, 0).astype(int)

print (df)
   A  B  C  Count
0  a  1  9      0
1  b  1  9      0
2  a  3  0      3
3  b  4  9      9
4  a  5  1      3
5  a  6  2      3
© www.soinside.com 2019 - 2024. All rights reserved.