假设我有N(列)dataFrame
的M(行)ExecuteWithReflection("Hello");
ExecuteWithReflection("Run","Vinod");
ExecuteWithReflection("TestNoParameters");
ExecuteWithReflection("Execute",new object[]{"Vinod","Srivastav"});
和长度为N的载体
df = pandas.DataFrame([...])
我想将移动平均函数应用于windows = [1,2,..., N]
中的每一列,但希望移动平均值对每列具有不同的长度(例如,column1的MA长度为1,第2列的MA长度为2,等) - 这些长度包含在df
是否有内置功能可以快速完成此操作?我知道windows
但不清楚如何为每列应用不同的args
答案 0 :(得分:1)
这是一种方法:
In [15]: dfrm
Out[15]:
A B C
0 0.948898 0.587032 0.131551
1 0.385582 0.275673 0.107135
2 0.849599 0.696882 0.313717
3 0.993080 0.510060 0.287691
4 0.994823 0.441560 0.632076
5 0.711145 0.760301 0.813272
6 0.932131 0.531901 0.393798
7 0.965915 0.812821 0.287819
8 0.782890 0.478565 0.960353
9 0.908078 0.850664 0.912878
In [16]: windows
Out[16]: [1, 2, 3]
In [17]: pandas.DataFrame(
{c: dfrm[c].rolling(windows[i]).mean() for i, c in enumerate(dfrm.columns)}
)
Out[17]:
A B C
0 0.948898 NaN NaN
1 0.385582 0.431352 NaN
2 0.849599 0.486277 0.184134
3 0.993080 0.603471 0.236181
4 0.994823 0.475810 0.411161
5 0.711145 0.600931 0.577680
6 0.932131 0.646101 0.613049
7 0.965915 0.672361 0.498296
8 0.782890 0.645693 0.547323
9 0.908078 0.664614 0.720350
正如@Manish Saraswat在评论中提到的,你也可以表达与dfrm[c].rolling_mean(windows[i])
相同的东西。此外,如果需要,您可以将序列用作windows
中的项目,并且它们将表达自定义窗口形状(大小和权重),或具有不同rolling
聚合和关键字的任何其他选项。