python - PyMongo:更新很多,熊猫数据框
问题描述
我正在尝试将技术指标值存储到我拥有价格记录的同一集合中。例如,如果当前存储在 MongoDB 集合中的数据帧如下所示:
Unix Timestamp Date Symbol ... Low Close Volume
1 1562540400000 2019-07-07 23:00:00 BTCUSD ... 11423.00 11475.07 32.996559
2 1562536800000 2019-07-07 22:00:00 BTCUSD ... 11333.59 11423.00 48.937730
3 1562533200000 2019-07-07 21:00:00 BTCUSD ... 11478.20 11526.25 25.323908
4 1562529600000 2019-07-07 20:00:00 BTCUSD ... 11423.94 11515.80 63.211972
并搜索存储的结果:
{'_id': ObjectId('5d30bc55ed1bb60762ac4d8d'), 'Unix Timestamp': 1562544000000, 'Date': '2019-07-08 00:00:00', 'Symbol': 'BTCUSD', 'Open': 11475.07, 'High': 11540.33, 'Low': 11469.53, 'Close': 11506.43, 'Volume': 10.77073088}
{'_id': ObjectId('5d30bc55ed1bb60762ac4d8e'), 'Unix Timestamp': 1562540400000, 'Date': '2019-07-07 23:00:00', 'Symbol': 'BTCUSD', 'Open': 11423.0, 'High': 11482.72, 'Low': 11423.0, 'Close': 11475.07, 'Volume': 32.99655899}
{'_id': ObjectId('5d30bc55ed1bb60762ac4d8f'), 'Unix Timestamp': 1562536800000, 'Date': '2019-07-07 22:00:00', 'Symbol': 'BTCUSD', 'Open': 11526.25, 'High': 11572.74, 'Low': 11333.59, 'Close': 11423.0, 'Volume': 48.9377301868}
{'_id': ObjectId('5d30bc55ed1bb60762ac4d90'), 'Unix Timestamp': 1562533200000, 'Date': '2019-07-07 21:00:00', 'Symbol': 'BTCUSD', 'Open': 11515.8, 'High': 11562.65, 'Low': 11478.2, 'Close': 11526.25, 'Volume': 25.3239076786}
{'_id': ObjectId('5d30bc55ed1bb60762ac4d91'), 'Unix Timestamp': 1562529600000, 'Date': '2019-07-07 20:00:00', 'Symbol': 'BTCUSD', 'Open': 11547.98, 'High': 11624.88, 'Low': 11423.94, 'Close': 11515.8, 'Volume': 63.211972440299995}
有没有办法用相关的技术指标更新多个文档?例如,该数据框/系列可能如下所示:
EMA26 ATR
0 11506.430000 70.80
1 11490.454151 83.43
2 11467.115719 239.15
3 11482.746419 139.65
4 11489.865287 200.94
我唯一能想到的就是迭代技术指标数据框中的每一行并根据 unix 时间戳或其他内容进行更新。
解决方案
我认为您将不得不迭代每个文档。
我查找了信息,但PyMongo Documenttion 中的 Collection 类没有显示创建批量的线索。相反,它只允许您更新一堆匹配单个条件 (update_many) 的文档。
假设您的时间戳是唯一的,使用 update_one 应该不会有其他问题。
推荐阅读
- eclipse - 如何确保我的键绑定优先于其他定义
- python - 无法在 Windows 7 32 位上安装 tensorflow
- javascript - 如何使用自动建议创建自定义文本区域?
- docker - 在 docker 容器中运行此命令 cmd := exec.Command("docker", "cp", container.ID+":"+filename, destDir+filename) 时发现问题
- python - 在 PYPI 上上传包
- android - 使视图中的所有元素“消失”
- c# - 使用子类属性实现接口
- javascript - 通过 Firebase 函数添加 Mailchimp 订阅者
- python - 如何在不使用标准函数的情况下合理化分数?
- c# - 如何匹配第一次出现的字符并将其拆分