1 回答
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
這更快:
datafile['Prev_Price'] = datafile.groupby('OrderId')['Price'].shift(fill_value=0)
它返回:
Price Qty OrderId Prev_Price
0 26690 3000 1213772 0
1 26700 3000 1215673 0
2 26705 6000 1216656 0
3 26700 3000 1213772 26690
4 26710 3000 1215673 26700
現(xiàn)在,在像您發(fā)布的那樣的短數(shù)據(jù)幀上,這種方法實(shí)際上更慢。
但是我用更大的數(shù)據(jù)框做了幾個(gè)測試:
在 100000(十萬)行的數(shù)據(jù)幀上,它大約快 3 倍。
在 1000000(一百萬)行的數(shù)據(jù)幀上,我的機(jī)器上仍然需要大約 1.5 秒,我沒有測量你的方法的執(zhí)行時(shí)間(花費(fèi)太長時(shí)間,我終止了進(jìn)程)。
注意: fill_value是pandas.DataFrame.shift自 pandas 0.24.0 以來的有效參數(shù)。對于舊版本,不要傳遞參數(shù)并NaN稍后使用datafile.fillna(0).
添加回答
舉報(bào)
