【问题标题】:Select between values in 2 columns based on a conditional in third column in pandas根据熊猫第三列中的条件在两列中的值之间进行选择
【发布时间】:2018-03-12 15:46:19
【问题描述】:

如何使用 pandas 根据第三列中的条件在两列之间进行选择?

在 excel 中我会使用类似的东西: NEW_COLUMN = IF(条件 == TRUE,第 1 列,第 2 列)。我无法使用 lambda 函数。

【问题讨论】:

  • 如果我或其他答案有帮助,请不要忘记accept 它 - 单击答案旁边的复选标记 (v) 将其从灰色切换为已填充。谢谢。

标签: python pandas if-statement lambda


【解决方案1】:

使用numpy.where:

df['NEW_COLUMN'] = np.where(CONDITION, df['COLUMN 1'] , df['COLUMN 2'])

示例

df = pd.DataFrame({'COL':[4,5,4],
                   'COLUMN 1':[7,8,9],
                   'COLUMN 2':[1,3,5],})


df['NEW_COLUMN'] = np.where(df['COL'] == 4, df['COLUMN 1'] , df['COLUMN 2'])
print (df)
   COL  COLUMN 1  COLUMN 2  NEW_COLUMN
0    4         7         1           7
1    5         8         3           3
2    4         9         5           9

【讨论】:

    【解决方案2】:

    你可以使用Series.where()方法:

    In [251]: df['NEW_COLUMN'] = df['COLUMN 1'].where(df['COL']==4, df['COLUMN 2'])
    
    In [252]: df
    Out[252]:
       COL  COLUMN 1  COLUMN 2  NEW_COLUMN
    0    4         7         1           7
    1    5         8         3           3
    2    4         9         5           9
    

    【讨论】:

      【解决方案3】:

      我的偏好是设置您的默认列值,然后根据您的情况使用.loc 访问器进行更新。

      来自@jezrael 的数据。

      df['NEW_COLUMN'] = df['COLUMN 2']
      df.loc[df['COL'] == 4, 'NEW_COLUMN'] = df['COLUMN 1']
      
      #    COL  COLUMN 1  COLUMN 2  NEW_COLUMN
      # 0    4         7         1           7
      # 1    5         8         3           3
      # 2    4         9         5           9
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-03
        相关资源
        最近更新 更多