我正在使用(当前)索引和列的数据框。索引是日期,列是数字。我想首先找到一个值小于某个级别的行:
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
答案 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