我在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行相同。
答案 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