Replacing values greater than a number in pandas dataframe

前端 未结 4 2023
甜味超标
甜味超标 2021-01-01 09:20

I have a large dataframe which looks as:

df1[\'A\'].ix[1:3]
2017-01-01 02:00:00    [33, 34, 39]
2017-01-01 03:00:00    [3, 43, 9]

I want to

4条回答
  •  余生分开走
    2021-01-01 10:10

    You can use apply with list comprehension:

    df1['A'] = df1['A'].apply(lambda x: [y if y <= 9 else 11 for y in x])
    print (df1)
                                    A
    2017-01-01 02:00:00  [11, 11, 11]
    2017-01-01 03:00:00    [3, 11, 9]
    

    Faster solution is first convert to numpy array and then use numpy.where:

    a = np.array(df1['A'].values.tolist())
    print (a)
    [[33 34 39]
     [ 3 43  9]]
    
    df1['A'] = np.where(a > 9, 11, a).tolist()
    print (df1)
                                    A
    2017-01-01 02:00:00  [11, 11, 11]
    2017-01-01 03:00:00    [3, 11, 9]
    

提交回复
热议问题