python - 更正数据框中的错误值
问题描述
我编写了以下代码来修复价格列中的错误值 150 和 -160。为了更正这些值,我使用以下语句来检测和更正价格:
- 价格每天的变动幅度不应超过 10。
- Price / Adj Price 的比率是分段常数
我想找到一种更 Pythonic 的方式来编码。尤其是我最后一个使用令人讨厌的切片的语句......我发现第二个语句特别难以以一种简洁的方式使用
谢谢=)
data = {"Price":[100,105,103,102,150,101,-160,100],"Adj Price": [101,106.05,104.03,103.02,108.07,103.02,107.1,102]}
mydf = pd.DataFrame(data)
series = "Price"
ref = "Adj Price"
df1 = df2.copy()
max_move = 20
abs_moves = (df1[series].diff(periods=1)[1:]).abs()
wrong_index = abs_moves[abs_moves>=max_move].index
mydf.loc[wrong_index [::2],series] = mydf.loc[wrong_index [::2],ref]*(np.array(mydf.loc[wrong_index [1::2],series]/mydf.loc[wrong_index [1::2],ref]))
解决方案
推荐阅读
- python - 如何使用管道中的最佳估计器来预测测试集?
- python - AI 问题(即使不应该发生碰撞)
- awk - 将文本添加到由 sed 中的某些特殊字符定义的特定块
- angular - app-routing.module.ts 可以有 2 条路径:/id
- python - 如何检查键盘按钮是否收到垃圾邮件并在再次按下之前添加冷却时间
- firebase - Firebase,客户端服务器端与云功能服务器端
- python - 未找到模块 - 我无法在外部运行使用 PyCharm 开发的 .py 文件
- javascript - 尝试使用带有 AJAX 的按钮单击来激活 PHP 功能
- android - Android AudioManager getStreamVolume isRestricted 模式
- android - 在列表视图中使用粗体(仅用于每个条目的一部分)