pandas - 如何测试现有数据框的条件并将结果放在新列上?
问题描述
ID Open Close SMA EMA
30 UNITY 11.50 11.53 12.576 12.715570
31 UNITY 11.44 11.34 12.399 12.626823
32 UNITY 11.26 11.74 12.273 12.569609
33 UNITY 11.72 11.61 12.150 12.507699
34 UNITY 11.51 11.43 11.994 12.438170
35 UNITY 11.85 11.17 11.844 12.356352
我想测试以下代码
df[(df.SMA >= df.EMA) &
(((df.Open <= df.SMA) & (df.Close >= df.EMA))
| ((df.Close >= df.EMA) & (df.Open <= df.EMA))
| ((df.Open >= df.SMA) & (df.Close <= df.SMA)))]
在我的数据框上创建一个新列“TAZ”,如果满足条件,则每行反映“100”,否则为“0”。
尽管代码按照我的要求工作,但我无法将结果放在单独的列中。一点帮助将不胜感激!
解决方案
你可以np.where
这样使用:
# filter condition
cond = (df.SMA >= df.EMA) & (((df.Open <= df.SMA) & (df.Close >= df.EMA)) | ((df.Close >= df.EMA) & (df.Open <= df.EMA)) | ((df.Open >= df.SMA) & (df.Close <= df.SMA)))
df['TAZ'] = np.where(cond, 100, 0)
推荐阅读
- python - 在 Python 中编辑列表
- node.js - Unable to install selenium standalone server using webdriver-manager
- react-native - Handling logged in users in react native in the StackNavigator
- math - How to convert coordinates from one Spherical system to another rotated by 90 degrees without going to Cartesian
- python - 为什么只有在使用 pytest 进行单元测试时才找到模块?
- git - 如何将多个 git repos 重新组合成一个 repo 并保留历史记录?
- azure - 可以使用 Azure Kubernetes Service 或 Azure Service Fabric 来部署和管理本地 kubernetes 集群吗?
- asp.net-core - ASPNET CORE InvalidOperationException:无法重定向到授权端点,配置可能丢失或无效
- android - Android Studio API 29 及更高版本的模拟器立即崩溃
- javascript - 无法读取未定义 Javascript 的属性“拆分”