首页 > 解决方案 > 使用 np.where 创建具有三个条件的新列

问题描述

如何在 np.where() 中获得三个条件。通常它只使用两个条件我怎么能得到三个。就像我需要创建一个新列 Better_Event 来存储“夏季”、“冬季”或“两者”基于夏季活动和冬季活动中赢得的总奖牌之间的比较(即 Total_Summer 和 Total_Winter 列之间的比较)使用“np .where()”函数。

data['Better_Events'] = np.where(data['Total_Summer']>data['Total_Winter'],'Summer','Winter')

上面的代码只有两个输出。如果 data['Total_Summer']==data['Total_Winter'] 给出“Both”,我该如何将其更改为三个

标签: pythonpandasnumpydataframe

解决方案


你需要np.select

这是一个例子:

df=pd.DataFrame({'Total_Summer':[1,2,3,3,6,7],'Total_Winter':[2,2,3,4,5,4]})
print(df)

   Total_Summer  Total_Winter
0             1             2
1             2             2
2             3             3
3             3             4
4             6             5
5             7             4

现在为每个条件设置条件和值:

cond=[df['Total_Summer']>df['Total_Winter'],df['Total_Summer']<df['Total_Winter'],df['Total_Summer'].eq(df['Total_Winter'])]
values=['Summer','Winter','Both']
df['Better_Events']=np.select(cond,values)
print(df)

   Total_Summer  Total_Winter Better_Events
0             1             2        Winter
1             2             2          Both
2             3             3          Both
3             3             4        Winter
4             6             5        Summer
5             7             4        Summer

推荐阅读