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

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

向前填充和回填 groupby 的更快方法

向前填充和回填 groupby 的更快方法

翻翻過去那場雪 2022-12-27 15:23:04
我想在 groupbyffill之后bfill的特定列。我的解決方案有效:import numpy as npimport pandas as pddf = pd.DataFrame({    "A": [1, 1, 1, 1, 2, 2, 2, 2],    "B": [np.nan, 'f1', 'b1', np.nan, np.nan, 'f2', 'b2', np.nan]})df['B'] = df.groupby('A')['B'].apply(lambda _: _.ffill().bfill())所以這:    A   B0   1   NaN1   1   f12   1   b13   1   NaN4   2   NaN5   2   f26   2   b27   2   NaN變成這樣:    A   B0   1   f11   1   f12   1   b13   1   b14   2   f25   2   f26   2   b27   2   b2請注意,我要 ffill 和 bfill 的序列將始終采用這種格式 ( Nan, x, y, Nan)雖然這有效,但它在大型數據幀上非常慢。我正在尋找一些優(yōu)化來加快速度(理想情況下不求助于使用 Dask 或多處理),也許我可以進行 Numpy 優(yōu)化?我沒有太多運氣看其他答案,比如這個。
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

如果你想要速度,避免使用 groupby 并使用 numpy 而不是 pandas 是可以遵循的好規(guī)則。這通常是不可能的,但在這里你有非常規(guī)則的數據的特殊情況,你所需要的只是形式的下標三元組[start:end:stride]:


df.iloc[0::4,1] = df.iloc[1::4,1].values

df.iloc[3::4,1] = df.iloc[2::4,1].values

說明:大多數人都知道您可以使用 form 的下標,[start:stop]但您也可以添加一個可選stride參數。所以第一行說用元素 1,5,9,... 替換元素 0,4,8,... “值”是刪除 pandas 索引所必需的,這實際上在這里是有害的。


通過避免 groupby,這應該會更快一些。為了提高速度,您可以將 B 列輸出到 numpy,在 numpy 中工作(基本上是相同的代碼),然后重新導入到 pandas:


arr = df.B.values

arr[0::4] = arr[1::4]  

arr[3::4] = arr[2::4]

df.B = arr

如果您想留在 pandas 中,您可以做的另一件事是取消堆疊,復制整個列,然后重新堆疊。無論如何,這基本上就是上面的代碼所做的。老實說,對于這種矩形類型的問題,任何數組樣式的方法都會相當快。


查看完整回答
反對 回復 2022-12-27
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

如果您的數據確實具有連續(xù)組的良好結構,那么您可以groupby通過使用limit參數 inffill和bfilllike 來避免:


print (df['B'].ffill(limit=1).bfill(limit=1))

0    f1

1    f1

2    b1

3    b1

4    f2

5    f2

6    b2

7    b2

Name: B, dtype: object


查看完整回答
反對 回復 2022-12-27
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

如果你的格式是前綴 as (Nan, x, y, Nan),什么時候可以做


df.B=df.groupby([df.A,df.index//2]).B.transform('first')

Out[169]: 

    B

0  f1

1  f1

2  b1

3  b1

4  f2

5  f2

6  b2

7  b2


查看完整回答
反對 回復 2022-12-27
  • 3 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號