有条理地填充Pandas数据帧中的空白值

use*_*538 2 python series dataframe pandas pandas-groupby

我有一个datafarme,如下所示(有更多列已被删除):

    memberID    shipping_country    
    264991      
    264991       Canada
    100          USA    
    5000         
    5000         UK
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用每个用户的运输国家/地区的现有值填充空白单元格:

    memberID    shipping_country    
    264991       Canada
    264991       Canada
    100          USA    
    5000         UK
    5000         UK
Run Code Online (Sandbox Code Playgroud)

但是,我不确定在大规模数据集上执行此操作的最有效方法是什么.也许,使用矢量groupby方法?

jpp*_*jpp 5

你可以使用GroupBy+ ffill/ bfill:

def filler(x):
    return x.ffill().bfill()

res = df.groupby('memberID')['shipping_country'].apply(filler)
Run Code Online (Sandbox Code Playgroud)

自定义函数是必要的,因为没有组合的Pandas方法ffillbfill顺序.

这也适用于所有价值都是NaN特定的情况memberID; 在这种情况下,他们将保持NaN.