python - 使用 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”,我该如何将其更改为三个
解决方案
你需要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
推荐阅读
- asp.net-core - 自定义异常中间件未捕获异常
- java - Java Spring Boot & Thymeleaf:模板解析时出错
- reactjs - 内部重构时引入错误
在反应前端 - python - 在同一张图上绘制 n 个动画生长线图(matplotlib,python)
- typescript - TypeScript 泛型中索引类型的值类型限制
- java - Android 不会完全按原样加载图像
- templates - 使用查找挖掘自动化 Ansible VMware
- sql - 为什么 json_extract 有效但 json_extract_scalar 无效?
- javascript - 替换html中的占位符?
- php - 在 Laravel 项目中,我应该把从数据库表中读取数据的代码放在哪里,这对于多个控制器来说是通用的?