【发布时间】:2021-04-05 04:08:49
【问题描述】:
我有以下数据框,我正在尝试设置它以用于一些回归分析:
Date Person Feature1 Feature2 .... Feature100
1/1/2020 Jim 12 15 82
1/7/2020 Jim 1 25 84
1/1/2021 Jim 12 15 85
1/1/2020 Jan 1 35 86
1/7/2020 Jan 5 15 84
1/1/2021 Jan 14 5 82
我已经创建了一些我想要转换的列的列表(大约 50 列):
l = ['Feature1','Feature2',......'Feature58']
对于在l 中找到的每一列名称,我想创建每个人最后 20 个条目的加权平均值(加权到最近的条目)并移动 1(因为我希望将其用作预测功能) .
Date Person Feature1 Feature2 .... Feature100 Feature1_Shifted Feature2_Shifted ... Feature58_Shifted
1/1/2020 Jim 12 15 82 N/A N/A
1/7/2020 Jim 1 25 84 12 15
1/1/2021 Jim 12 15 85 6.5 20
1/1/2020 Jan 1 35 86 N/A N/A
1/7/2020 Jan 5 15 84 1 35
1/1/2021 Jan 14 5 82 3 25
在这里根据这个问题松散地:Most Pythonic Way to Create Many New Columns in Pandas
这里的加权平均值:https://stackoverflow.com/a/57602282/13194245 可以选择更改权重。
我正在努力将所有内容合二为一(以及从哪里开始)。因此,任何帮助将不胜感激。谢谢!
【问题讨论】:
-
计算您链接到的加权平均值的答案使用 numpy 函数,该函数需要为每个值指定特定权重。 Pandas 有另一个计算指数(衰减)加权平均值的函数:pandas.pydata.org/docs/reference/api/pandas.DataFrame.ewm.html。这是你希望实现的吗?或者您会在自己的列中定义权重?
-
这看起来可能是个不错的选择!我没有在他们自己的列中定义任何权重,所以听起来它会起作用!
-
嗨@AlexK。你知道你是否可以用
ewm设置一个窗口期吗?好像不行? -
看看我提供的链接对你有没有帮助