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