在n行之后在pandas中求和

时间:2015-08-06 17:46:47

标签: python python-3.x pandas

我正在使用(当前)索引和列的数据框。索引是日期,列是数字。我想首先找到一个值小于某个级别的行:

list = []
for index,row in df.iterrows():
    if row < -0.1:
        list.append(#sum the next 60 values)

我觉得这应该很简单,但我无法理解大熊猫的感觉。索引和选择数据的文档。

除此之外,如果我再次拥有索引(日期)和超过1列的值,我将如何继续。总和只应该在每列深达30,60,90等。我想我会在上面添加一个for循环:

for i in df.columns:
    #add logic here

编辑:这是数据的样子:

data

Date        Ticker

2015-06-23 -0.010959
2015-06-24 -0.002770
2015-06-25  0.005556
2015-06-26  0.008287
2015-06-29 -0.013699
2015-06-30  0.005556
2015-07-01  0.006077
2015-07-02 -0.010983

2 个答案:

答案 0 :(得分:1)

尝试通过查找满足条件的所有行的整数索引来构建索引列表,如:

import numpy as np
from pandas import DataFrame

df = DataFrame([["2015-06-23",-0.010959],
["2015-06-24", -0.102770],
["2015-06-25",  0.005556],
["2015-06-26",  0.008287],
["2015-06-29", -0.113699],
["2015-06-30",  0.005556],
["2015-07-01",  0.006077],
["2015-07-02", -0.010983]], columns=['Date','Ticker'])

df.set_index(['Date'])

index_list = list(np.where(df.Ticker < -0.1)[0])

然后迭代这些索引位置以获取您的值:

list = []
for i in index_list:
     list.append(df.loc[i:i+30-1]['Ticker'].sum())

答案 1 :(得分:0)

您可以在Serial.Read()数据框上计算rolling_sum来执行此操作。

reversed