[英]Sum All Positive and All Negative Values Pandas
我有以下 dataframe (df):
Row Number
Row 0 0.24 0.16 -0.18 -0.20 1.24
Row 1 0.18 0.12 -0.73 -0.36 -0.54
Row 2 -0.01 0.25 -0.35 -0.08 -0.43
Row 3 -0.43 0.21 0.53 0.55 -1.03
Row 4 -0.24 -0.20 0.49 0.08 0.61
Row 5 -0.19 -0.29 -0.08 -0.16 0.34
我试图分别对所有负数和正数求和,例如 sum(neg_numbers) = n 和 sum(pos_numbers) = x
我努力了:
df.groupby(df.agg([('negative' , lambda x : x[x < 0].sum()) , ('positive' , lambda x : x[x > 0].sum())])
无济于事。
我将如何总结这些价值?
先感谢您!
你可以做
sum_pos = df[df>0].sum(1)
sum_neg = df[df<0].sum(1)
如果要获取每行的总和。 如果要对所有值求和而不管行/列如何,可以使用np.nansum
sum_pos = np.nansum(df[df>0])
你可以做
df.mul(df.gt(0)).sum().sum()
Out[447]: 5.0
df.mul(~df.gt(0)).sum().sum()
Out[448]: -5.5
如果需要逐行求和
df.mul(df.gt(0)).sum()
Out[449]:
1 0.42
2 0.74
3 1.02
4 0.63
5 2.19
dtype: float64
总和的另一种方式:
sum_pos = df.to_numpy().flatten().clip(min=0).sum()
sum_neg = df.to_numpy().flatten().clip(max=0).sum()
对于按列求和:
sum_pos_col = sum(df.to_numpy().clip(min=0))
sum_neg_col = sum(df.to_numpy().clip(max=0))
如果您在 dataframe 中有字符串列并且想要获取特定列的总和,那么
df[df['column_name']>0]['column_name'].sum()
df[df['column_name']<0]['column_name'].sum()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.