python - 取决于熊猫条件的另一列的列值
问题描述
我有一个示例数据:
datetime temperature season
2021-04-10 01:00:00. 10. Heating season
2021-04-10 01:00:00. 26. Heating season
2021-07-10 01:00:00. 16. Cooling season
2021-07-10 01:00:00. 30. Cooling season
我想创建一个名为 new_temperature 的新列:a)如果温度列小于 18 并且季节是采暖季节,那么 new_temperature 应该是 25,否则如果它的冷却季节是 18。b) 如果温度列大于 25 并且季节是冷却季节,则 new_temperature 列应为 18,否则如果其采暖季节为 22。
示例输出如下所示:
datetime temperature season. new_temperature
2021-04-10 01:00:00. 10. Heating season. 25
2021-04-10 01:00:00. 26. Heating season. 22
2021-07-10 01:00:00. 16. Cooling season. 18
2021-07-10 01:00:00. 30. Cooling season. 18
解决方案
np.select
有4个条件:
cond_1 = (df.temperature < 18) & (df.season == "Heating season")
cond_2 = (df.temperature < 18) & (df.season != "Heating season")
cond_3 = (df.temperature > 25) & (df.season == "Cooling season")
cond_4 = (df.temperature > 25) & (df.season != "Cooling season")
conditions = [cond_1, cond_2, cond_3, cond_4]
choices = [25, 18, 18, 22]
df["new_temperature"] = np.select(conditions, choices)
要得到
datetime temperature season new_temperature
0 2021-04-10 01:00:00. 10.0 Heating season 25
1 2021-04-10 01:00:00. 26.0 Heating season 22
2 2021-07-10 01:00:00. 16.0 Cooling season 18
3 2021-07-10 01:00:00. 30.0 Cooling season 18
注意:由于您的条件不是互斥的,您可能希望提供一个default
值np.select
作为最后一个参数。如果没有条件匹配,它将被放入结果中。
推荐阅读
- r - R读取excel(xlsx)文件日期,时间格式问题
- swiftui - 动态更改 Picker 的内容
- java - 你知道我的 spring 安全配置有什么问题吗?
- angular - 在 'root'、'platform'、'any' wrt providedIn 中,在 Angular 的哪种情况下应该首选哪一个?
- amazon-web-services - AWS ALB - 您必须从至少两个可用区中指定子网
- c - 获取处理器的内存粒度
- python - ModuleNotFoundError:作为 linux 服务运行时没有名为“cec”的模块
- flutter - 当 onPressed 为 bottomNavigationBar 时如何设置材质按钮的状态
- python - 为什么我的请求无法响应我的输入数据?
- c# - 为什么即使在使用 await 之后控制台也会退出?