簡體   English   中英

熊貓為每列/行應用不同的arg

[英]pandas apply with different arg for each column/row

假設我有一個M(行)乘N(列)的dataFrame

df = pandas.DataFrame([...])

和長度為N的向量

windows = [1,2,..., N]

我想將移動平均函數應用於df每一列,但希望每一列的移動平均值具有不同的長度(例如column1的MA長度為1,第2列的MA長度為2,以此類推)-這些長度都包含在內在windows

是否有內置功能可以快速執行此操作? 我知道df.apply(lambda a: f(a), axis=0, args=...)但不清楚如何為每列應用不同的args

這是一種實現方法:

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聚合和關鍵字的任何其他選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM