【发布时间】:2018-11-24 19:37:04
【问题描述】:
如何在 pandas 中没有很多循环的情况下连续计算负值和正值的数量(计数)和总和?我想获得连续负数的最大总和以及连续正数的最大总和。示例数据框:
datetime Value
2018-11-12 15:10:00 2.00
2018-11-12 15:20:00 -10.50
2018-11-12 15:30:00 10.50
2018-11-12 15:40:00 7.50
2018-11-12 15:50:00 8.00
2018-11-12 16:10:00 -20.00
2018-11-12 16:20:00 -10.00
我希望输出是:
Max # of negatives in a row: 2, Total value = -30.00
Max # of positives in a row: 3, Total value = 26.00
一个简单的pd.groupby() 并不能解决问题,因为它没有对订单进行分组。也许某种sql查询? pd.query()?
【问题讨论】:
-
您能解释一下您的预期输出吗?是否按照共享输入?
-
行?还是专栏?您的示例输出和示例数据似乎不匹配。我假设您希望“值”列显示正数和负数,这将使 -40 的值成为 #3 负数,而 27 的值将成为 #4 正数。
-
输出匹配..我想要连续的负数,并将它们的总值相加。由于它是时间序列,我想看看连续发生了多少个负数,以及总和是多少。我也希望这是积极的,但如果我想出另一个应该很容易。
-
恐怕我没跟上。你能详细说明一下吗?例如,请指出在您的示例中一起使用的加起来为 -30 的值。
-
@ParitoshSingh 看起来 26 是 10.50 + 7.50 + 8.00,而 -30 是 -20.00 和 -10.00 的最后两行 - 不确定前两行发生了什么或其他方面发生了什么负面/正面虽然......马特 - 你能详细说明预期的输出,也许改写你的标准 - 这有点模棱两可吗?