如何使用pandas基于第三列中的条件选择2列?
在excel中我会使用类似的东西: NEW_COLUMN = IF(条件== TRUE,第1列,第2列)。我无法使用lambda函数。
答案 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