访问python dataframe apply方法中的前一行

时间:2015-12-13 03:25:50

标签: python pandas dataframe

我想在包含单个列comp的pandas数据框中创建一个新列price。此新列的值应由对price的当前值和后3个值起作用的函数生成。 df.apply()排成一行,shift()似乎无法正常工作。专家是否有任何建议让它在矢量化操作中运作?

1 个答案:

答案 0 :(得分:0)

使用一系列和group.apply()函数。下面假设您有一个名为ID的索引或列,增加的行值1,2,3,...可用于计算3个值。

# SERIES SUM FUNCTION
def intsum(x):
    if x < 3:        
        ser = df.price[(df.ID < x)]
    else:
        ser = df.price[(df.ID >= x - 3) & (df.ID < x)]
    return ser.sum()    

# APPLY FUNCTION
df['comp'] = df['ID'].apply(intsum)