我有一个包含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中最常用的值,这样我就不会填写噪音/错误的值?它扭曲了:))
感谢您的帮助!
答案 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)
)
或者在最后一步,您可以使用另一种更适合数据结构的方式。