第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas - 將 groupby() 與 rolling() 和 apply()

Pandas - 將 groupby() 與 rolling() 和 apply()

ITMISS 2022-07-26 16:56:05
在 Pandas 中為大型數(shù)據(jù)幀(1500682 行)調(diào)用 groupby 以及滾動和應(yīng)用函數(shù)時,我的性能非常緩慢。我正在嘗試獲得具有不同權(quán)重的滾動移動平均線。運行緩慢的代碼部分是:df['rolling'] = df.groupby('i2')['x'].rolling(3).apply(lambda x: x[-3]*0.1+x[-2]*0.9).reset_index(level=0, drop=True).reindex(df.index)完整的代碼(帶有數(shù)據(jù))是:import pandas as pdfrom random import randint# data (it takes some time to create [less than 1 minute in my computer])data1   = [[[[randint(0, 100) for i in range(randint(1, 2))] for i in range(randint(1, 3))] for i in range(5000)] for i in range(100)]data2   = pd.DataFrame(    [        (i1, i2, i3, i4, x4)        for (i1, x1) in enumerate(data1)        for (i2, x2) in enumerate(x1)        for (i3, x3) in enumerate(x2)        for (i4, x4) in enumerate(x3)    ],    columns = ['i1', 'i2', 'i3', 'i4', 'x'])data2.drop(['i3', 'i4'], axis=1, inplace = True)df   = data2.set_index(['i1', 'i2']).sort_index()## conflicting part of the code ##df['rolling'] = df.groupby('i2')['x'].rolling(3).apply(lambda x: x[-3]*0.1+x[-2]*0.9).reset_index(level=0, drop=True).reindex(df.index)如果您能詳細(xì)說明代碼以使其更高效并更快地執(zhí)行,我將不勝感激。
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊

如果我理解正確,您可以嘗試:

grp=df.groupby('i2')['x']
df['rolling']=grp.shift(2).mul(0.1).add(grp.shift(1).mul(0.9))

現(xiàn)在詳細(xì)說明:

為什么不.apply(...)

我什么時候應(yīng)該在我的代碼中使用 pandas apply()?

你應(yīng)該做的是使用任何利用矢量化操作的東西。我在這里做了一些更詳細(xì)的解釋:

https://stackoverflow.com/a/60029108/11610186


查看完整回答
反對 回復(fù) 2022-07-26
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號