有没有更好的方法来对大熊猫使用'ffill'方法进行分段的fillna?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有更好的方法来对大熊猫使用'ffill'方法进行分段的fillna?相关的知识,希望对你有一定的参考价值。

让我解释一下这种情况。事情是我目前正在处理有时被分类的数据,有时却没有。所以我决定使用带有“ ffil”作为方法的fillna的熊猫。我只是觉得这不是最佳和/或清洁的解决方案。如果有人可以更好地帮助我,我将非常感激。这里有一些代码来说明这一点:

data = 
    "detail":['apple mac', 'apple iphone x', 'samsumg galaxy s10', 'samsumg galaxy s10', 'hp computer'],
    'category': ['computer', 'phone', 'phone', np.NaN, np.NaN]


df = pd.DataFrame(data)

返回

    detail              category
0   apple mac           computer
1   apple iphone x      phone
2   samsumg galaxy s10  phone
3   samsumg galaxy s10  NaN
4   hp computer         NaN

首先我过滤了没有类别的明细值:

details_without_cats = df[df.category.isnull()].detail.unique()

然后我循环遍历这些值以进行填充:

for detail_wc in details_without_cats:
    df[df.detail == detail_wc] = df[df.detail == detail_wc].fillna(method = 'ffill')
print(df)

完全返回我想要的

    detail              category
0   apple mac           computer
1   apple iphone x      phone
2   samsumg galaxy s10  phone
3   samsumg galaxy s10  phone
4   hp computer         NaN

难题如下。如果我有成千上万个样本,这种情况会怎样?有没有更好的办法?请帮助

答案

我们可以做

df['category']=df.groupby('detail')['category'].ffill()
df
               detail  category
0           apple mac  computer
1      apple iphone x     phone
2  samsumg galaxy s10     phone
3  samsumg galaxy s10     phone
4         hp computer       NaN

以上是关于有没有更好的方法来对大熊猫使用'ffill'方法进行分段的fillna?的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas 数据帧中使用前向和后向填充填充缺失值(ffill 和 bfill)

python——dataframe向下向上填充,fillna和ffill

更改熊猫的轴替换填充

python,对大熊猫数据框的操作

熊猫:使用数据框的多列作为另一个的索引

如何在熊猫中为每个组做前向填充