我想根据熊猫中另一列中的值求和一列中的值。
参见下图。
在(A)栏中,值为1或0,在B栏中,另一个值为。每当第一列中的值= 1时,我都需要将第二列中的值相加(相加)在两个之间。
换句话说,在两个事件之间(用1表示),我需要添加发生的其他事情的总数(b列)。
最佳答案
将groupby
与transform
用于sum
,将numpy.where
用于添加空字符串,如果需要数字列,则添加NaN
。
a = df['A'].shift().cumsum().fillna(df['A'].iat[0])
df['C'] = np.where(a.duplicated(keep='last'), '', df['B'].groupby(a).transform('sum'))
print (df)
A B C
0 1 5
1 0 2
2 0 1
3 0 5
4 1 4 17
5 0 4
6 0 2
7 0 4
8 1 4 14
df['C'] = np.where(a.duplicated(keep='last'), np.nan, df['B'].groupby(a).transform('sum'))
print (df)
A B C
0 1 5 NaN
1 0 2 NaN
2 0 1 NaN
3 0 5 NaN
4 1 4 17.0
5 0 4 NaN
6 0 2 NaN
7 0 4 NaN
8 1 4 14.0
详情:
print (a)
0 1.0
1 1.0
2 1.0
3 1.0
4 1.0
5 2.0
6 2.0
7 2.0
8 2.0
Name: A, dtype: float64
关于python - Pandas -一列中的值在另一列中的值之间求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47135016/