我想根据熊猫中另一列中的值求和一列中的值。
参见下图。

在(A)栏中,值为1或0,在B栏中,另一个值为。每当第一列中的值= 1时,我都需要将第二列中的值相加(相加)在两个之间。

换句话说,在两个事件之间(用1表示),我需要添加发生的其他事情的总数(b列)。

python -  Pandas -一列中的值在另一列中的值之间求和-LMLPHP

最佳答案

groupbytransform用于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/

10-08 22:28