【问题标题】:Change cell value according to values within another column [pandas]根据另一列 [pandas] 中的值更改单元格值
【发布时间】:2022-11-14 10:27:33
【问题描述】:

我有一个数据框,例如

Names Value COLA COLB COLC
A     100   0    4    1
B     NaN   0    2    1
C     20    3    0    0
D     1     0    1    0
E     300   3    0    0

我想更改所有COLA,BC 值(0 除外):

  • 1如果Value col > 30
  • 2如果 Value col <=30NaN

然后我应该得到

Names Value COLA COLB COLC
A     100   0    1    1
B     NaN   0    2    2
C     20    2    0    0
D     1     0    2    0
E     300   1    0    0

有人有建议吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    numpy.where 与用于广播的链条件一起使用 - 将Series 中的掩码分配给多个列,以将0 的多个输出设置为设置0 的布尔掩码:

    cols = ['COLA','COLB','COLC']
    
    df[cols] = np.where(df['Value'].gt(30).to_numpy()[:, None], 1, 2) * df[cols].ne(0)
    print (df)
      Names  Value  COLA  COLB  COLC
    0     A  100.0     0     1     1
    1     B    NaN     0     2     2
    2     C   20.0     2     0     0
    3     D    1.0     0     2     0
    4     E  300.0     1     0     0
    

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 2018-04-15
      • 2018-01-16
      • 1970-01-01
      • 2021-05-21
      • 2012-10-15
      相关资源
      最近更新 更多