【问题标题】:Filling non-numeric values in Pandas based on another column根据另一列填充 Pandas 中的非数字值
【发布时间】:2015-07-15 15:34:19
【问题描述】:

我在 pandas 数据框中丢失了非数字数据,当另一列匹配时,有没有办法用不同行的值替换 NaN?例如:

tdf = pandas.DataFrame({
    "id": [np.nan, 22, 22, 45, 45, 81],
    "item": ["apple", "apple", "apple", "orange", "orange", "banana"]
})

    id  item
0   NaN apple
1   22  apple
2   22  apple
3   45  orange
4   45  orange
5   81  banana

所以我想将第一行中的 id 替换为 22,因为该项目与第 1 行或第 2 行相同。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以在“项目”上groupby 并传递参数as_index=False,然后调用bfill 以向后填充NaN 值:

    In [424]:
    
    tdf.groupby('item', as_index=False)..bfill()
    Out[424]:
       id    item
    0  22   apple
    1  22   apple
    2  22   apple
    3  45  orange
    4  45  orange
    5  81  banana
    

    【讨论】:

    • 谢谢!正是我正在寻找的东西,但还没有遇到这种可能性。
    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2021-03-16
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多