【问题标题】:pandas dataframe rolling apply function using multiple columns使用多列的熊猫数据框滚动应用功能
【发布时间】:2020-06-03 13:47:44
【问题描述】:

我正在尝试将函数应用于滚动窗口。我需要从数据框中引用多个列来计算函数的输出。 下面是我正在尝试做的一些示例代码。

import pandas as pd
import statsmodels.formula.api as smf

d = pd.DataFrame({
    'Col1': range(0,10),
    'Col2': range(10,20),
    'Col3': range(20,30)
    })

func = lambda x: smf.ols('Col1 ~ Col2', data=x).fit().params[1]

d['Out'] = d.rolling(3).apply(func)

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    当前实现 rolling 分别处理每一列,因此不可能对 2 个不同的列求和。

    您可以通过以下方式对其进行测试:

    def func(x):
        print (x)
        return x.sum()
    
    d.rolling(3).apply(func)
    

    【讨论】:

    • 对完成所需任务的有效方法有何建议?
    • @kav - 你能从样本数据中添加预期的输出吗?
    • 我打算使用的 lambda 函数将输入传递给另一个方法。我在问题中添加了一些额外的代码。很抱歉造成混乱,我试图让最初的问题保持简单。
    • @kav - 我猜你需要this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多