用已知值填充NaN

时间:2017-10-07 20:42:05

标签: python pandas numpy dataframe

我有一个包含3列的数据集,示例如下:

       User         Items         Item_ID

0      U265          PC             1
1      U299         Table           2
2      U299          PC            NaN  

我想根据列项目填充具有已知值的nans。 PC的ID为1,所以我希望python在Item_ID中查找NaN,检查列Items是否不是NaN,如果它好,请检查前一行所需项目的Item_ID然后填写NaN价值。

我会在最后得到:

       User         Items         Item_ID

0      U265          PC             1
1      U299         Table           2
2      U299          PC             1  

有什么想法吗?我应该使用地图功能吗? groupby还要使用for和item中最常用的值,这样我就不会填写噪音/错误的值?它扭曲了:))

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以按逻辑阵列访问一组行。

df.loc[df.Items == "PC"]

您甚至可以组合多个条件,请参阅Python Pandas: Boolean indexing on multiple columns

df.loc[(df.Items == "PC") and numpy.isnan(df.Item_ID)]

然后您可以设置该值并将其重新连接到旧数据框中,如此

df.update(
    df.loc[(df.Items == "PC") 
           and numpy.isnan(df.Item_ID)]
    .assign(Item_ID=1)
)

或者在最后一步,您可以使用另一种更适合数据结构的方式。