簡體   English   中英

使用 Groupby 在 Pandas DataFrame 中重復非空值

[英]repeat non-null value in Pandas DataFrame with Groupby

我想使用 groupby 用非 NaN 值填充所有 NaN 值。 我知道我可以使用 fillna(method='ffill') 然后使用 fillna(method='bfill') 來做到這一點,因為我的非 NaN 值並不總是開始或結束,或者我可以使用非創建一個新的 DataFrame -NaN 值,然后合並它們,但我需要這樣做很多次,我想知道是否有更有效的方法來減少處理時間。

我在想類似 .transform(fillna) 函數的東西。

這是我的輸入:

col1 col2
一個
一個
一個 '蘋果'
'香蕉'

這就是我想要得到的

col1 col2
一個 '蘋果'
一個 '蘋果
一個 '蘋果'
'香蕉
'香蕉'
'香蕉'

正如設想的那樣,您可以執行以下操作:

df.groupby('col1')['col2'].ffill().bfill()

你也可以這樣做:

df.groupby('col1')['col2'].transform('first')

在大型數據幀上應該更快。

請注意,在這種情況下它正在做同樣的事情,但如果您在每個組中都有非唯一的非 NaN 值,它的行為會有所不同。

df1.col2 = df1.col2.mask((df1.col2.isnull()) & (df1.col1 == 'A'), 'apples')
df1.col2 = df1.col2.mask((df1.col2.isnull()) & (df1.col1 == 'B'), 'bananas')

暫無
暫無

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

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