根据另一列填充Pandas中的非数字值

时间:2015-07-15 15:34:19

标签: python pandas dataframe

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

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行相同。

1 个答案:

答案 0 :(得分:3)

您可以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