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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我可以在多列上加快 groupby 速度,然后用 1 個(gè)句點(diǎn)進(jìn)行 diff 嗎?

我可以在多列上加快 groupby 速度,然后用 1 個(gè)句點(diǎn)進(jìn)行 diff 嗎?

夢(mèng)里花落0921 2022-06-28 16:15:02
我有一個(gè)像這樣的DataFrame。df = pd.DataFrame({'a': np.random.randint(0, 3, 10**7),                     'b': np.random.randint(0, 4000, 10**7),                     'c': np.random.random(10**7)}我想按前兩列分組(無序,與我在此處提供的組數(shù)大致相同),然后區(qū)分第三列。df.groupby(['a', 'b']).c.diff(periods=-1)可悲的是,這對(duì)我來說很慢,但我想這是相當(dāng)多的工作。>>> %timeit df.groupby(['a', 'b']).c.diff(periods=-1)     10.2 s ± 75.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)有什么辦法可以避免 Pandas groupby 加快速度嗎?我知道在 Pandas 中進(jìn)行 groupby->reduce 時(shí),通??梢杂眉?NumPy 替換,但我不確定這里是否有什么聰明的方法可以代替 groupby 操作。
查看完整描述

1 回答

?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

這確實(shí)是一個(gè)有趣的問題,因?yàn)槲覀兺ǔV贿x擇groupby(),即使它相當(dāng)昂貴。

這是另一種更快的方法:

  1. 排序方式['a','b']

  2. 計(jì)算差異,屏蔽每個(gè)塊中的最后一行NaN

和代碼:

s = df.sort_values(['a', 'b'])df['diff_c'] = (s['c'].diff(periods=-1)
                       .where(s.duplicated(['a','b'], keep='last'))
                )

在我的計(jì)算機(jī)上,您的代碼在 8.5 秒內(nèi)運(yùn)行,而上述代碼在 1.8 秒內(nèi)運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2022-06-28
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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