python - 这段代码有条件地计算 Pandas 数据框列有什么问题?
问题描述
我有以下数据:
数据:
ObjectID,Date,Price,Vol,Mx
101,2017-01-01,,145,203
101,2017-01-02,,155,163
101,2017-01-03,67.0,140,234
101,2017-01-04,78.0,130,182
101,2017-01-05,58.0,178,202
101,2017-01-06,53.0,134,204
101,2017-01-07,52.0,134,183
101,2017-01-08,62.0,148,176
101,2017-01-09,42.0,152,193
101,2017-01-10,80.0,137,150
我想添加一个名为 CheckCount 的新列,如果它们大于 150,则计算 Vol 和 Mx 列中的值。我编写了以下代码:
代码:
import pandas as pd
Observations = pd.read_csv("C:\\Users\\Observations.csv", parse_dates=['Date'], index_col=['ObjectID', 'Date'])
Observations['CheckCount'] = (Observations[['Vol', 'Mx']]>150).count(axis=1)
print(Observations)
但是,不幸的是,它正在计算每个值(结果始终为 2),而不仅仅是值 > 150 的地方 - 我的代码有什么问题?
当前结果:
ObjectID,Date,Price,Vol,Mx,CheckCount
101,2017-01-01,,145,203,2
101,2017-01-02,,155,163,2
101,2017-01-03,67.0,140,234,2
101,2017-01-04,78.0,130,182,2
101,2017-01-05,58.0,178,202,2
101,2017-01-06,53.0,134,204,2
101,2017-01-07,52.0,134,183,2
101,2017-01-08,62.0,148,176,2
101,2017-01-09,42.0,152,193,2
101,2017-01-10,80.0,137,150,2
期望的结果:
ObjectID,Date,Price,Vol,Mx,CheckCount
101,2017-01-01,,145,203,1
101,2017-01-02,,155,163,2
101,2017-01-03,67.0,140,234,1
101,2017-01-04,78.0,130,182,1
101,2017-01-05,58.0,178,202,2
101,2017-01-06,53.0,134,204,1
101,2017-01-07,52.0,134,183,1
101,2017-01-08,62.0,148,176,1
101,2017-01-09,42.0,152,193,2
101,2017-01-10,80.0,137,150,0
解决方案
您是否在寻找:
df['CheckCount'] = df[['Vol','Mx']].gt(150).sum(1)
输出:
ObjectID Date Price Vol Mx CheckCount
0 101 2017-01-01 NaN 145 203 1
1 101 2017-01-02 NaN 155 163 2
2 101 2017-01-03 67.0 140 234 1
3 101 2017-01-04 78.0 130 182 1
4 101 2017-01-05 58.0 178 202 2
5 101 2017-01-06 53.0 134 204 1
6 101 2017-01-07 52.0 134 183 1
7 101 2017-01-08 62.0 148 176 1
8 101 2017-01-09 42.0 152 193 2
9 101 2017-01-10 80.0 137 150 0
推荐阅读
- android - HttpsURLConnection 错误:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚
- r - 使用 R 的时间序列中的间隙大小计算
- swift - 如何用异步任务装饰午睡请求
- loops - 在 SAS 中循环直到特定关键字
- php - 如何使用 php 在 html 中访问选择列表的值
- c# - 在 C# 中创建自定义事件
- java - Android:我的 listView onClick 事件未按预期工作(顺序混乱)
- powershell - 在Powershell中根据文件中的第一个单词重命名文本文件
- php - php soap - 400 错误请求
- r - 网页抓取:Set_values 和爬虫的问题