根据pandas中第三列中的条件,在2列中选择值

时间:2018-03-12 15:46:20

标签: python pandas if-statement lambda

如何使用pandas基于第三列中的条件选择2列?

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用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

答案 2 :(得分:0)

我的偏好是设置默认列值,然后根据您的情况使用.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