我正在处理(当前)索引和列的数据框。索引是日期,列是数字。我想先定位到值小于某个级别的那一行:
list = []
for index,row in df.iterrows():
if row < -0.1:
list.append(#sum the next 60 values)
我觉得这应该很简单,但我无法理解 pandas 的索引和选择数据的文档。
除此之外,如果我再次拥有一个索引(日期)和超过 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
最佳答案
尝试通过查找满足条件的所有行的整数索引来构建索引列表,如:
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())
关于python - 在 n 行后在 pandas 中求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862469/