【问题标题】:Fill NaN with a known value用已知值填充 NaN
【发布时间】:2018-03-19 09:25:15
【问题描述】:

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

       User         Items         Item_ID

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

我想根据列 Items 用已知值填充 nans。 PC 的 ID 为 1,因此我希望 python 在 Item_ID 中查找 NaN,检查列 Items 是否不是 NaN,如果它很好,请检查前一行中所需 Item 的 Item_ID,然后用该值填充 NaN。

我会在最后得到:

       User         Items         Item_ID

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

有什么想法吗?我应该使用地图功能吗? groupby 还取 for 和 Item 中最常用的值,所以我不填写噪音/错误值?它是扭曲的:)

感谢您的帮助!

【问题讨论】:

    标签: python pandas numpy dataframe


    【解决方案1】:

    您可以通过逻辑数组访问一组行。

    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)
    )
    

    或者对于最后一步,您可以使用更适合数据结构的其他方式。

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 2017-10-25
      • 2017-07-10
      • 2022-07-22
      • 2015-02-14
      相关资源
      最近更新 更多