【问题标题】:access previous rows in python dataframe apply method访问python数据框应用方法中的前几行
【发布时间】:2015-12-13 03:25:49
【问题描述】:

我想在包含单个列 price 的 pandas 数据框中创建一个新列 comp。这个新列的值应该由处理price 的当前和最后 3 个值的函数生成。 df.apply() 在单行上工作,shift() 似乎不起作用。专家们有什么建议让它在矢量化操作中工作吗?

【问题讨论】:

  • 您可能想尝试使用shiftrolling_apply 方法。
  • 您可以添加示例吗?也许帮助 this 以及 Stackoverflow works.

标签: python pandas dataframe


【解决方案1】:

使用系列求和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)

【讨论】:

    猜你喜欢
    • 2019-09-28
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2020-09-21
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多