【问题标题】:Updating column value based on nan value of other column根据其他列的 nan 值更新列值
【发布时间】:2022-08-18 08:35:36
【问题描述】:

我有这个简单的功能,有 2 列。我要做的是检查哪个组有多个 nan 并将其更改为新的所需值。 这是一个代码sn-p:

def twod_array():
    data = {\"group\": [-1, 0, 1, 2, 3],
            \'numbers\': [[2], [14, 15], [16, 17], [19, 20, 21], [np.nan]],
            }
    df = pd.DataFrame(data=data)
    new_group_number = 100
    df.loc[4, \"group\"] = new_group_number
    return df

前: 这就是数据的样子,您可以假设数字已排序。

   group       numbers
0     -1           [2]
1      0      [14, 15]
2      1      [16, 17]
3      2  [19, 20, 21]
4      3         [nan]

在我的示例中,我知道 nan 的位置,因为它位于第 4 位,我可以使用 loc 将其更改为 100,如下所示:

   group       numbers
0     -1           [2]
1      0      [14, 15]
2      1      [16, 17]
3      2  [19, 20, 21]
4    100         [nan]

如果我不知道nan在哪里怎么办?我怎么知道要更新哪个组?我想到的都是嵌套的 for 循环,我宁愿避免......这里有什么建议吗?

    标签: python pandas numpy multidimensional-array nan


    【解决方案1】:

    你可以更换

    df.loc[4, "group"] = new_group_number
    

    idx = df.numbers.apply(lambda l: any(pd.isna(e) for e in l))
    df.loc[idx, 'group'] = new_group_number
    

    【讨论】:

      【解决方案2】:

      您可以使用 .isin

      df.loc[df['numbers'].isin([[np.nan]]), 'group'] = 100
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-19
        • 1970-01-01
        • 1970-01-01
        • 2020-02-19
        • 1970-01-01
        • 2018-12-27
        • 1970-01-01
        • 2021-12-20
        相关资源
        最近更新 更多