python - Python pandas在时间列上合并数据帧意外结果
问题描述
我想通过相同的时间列合并两个熊猫数据框:
Time g41ko_fuell_hires
0 2021-02-25 19:09:637 120.34
1 2021-02-25 19:09:737 120.46
2 2021-02-25 19:09:837 120.44
3 2021-02-25 19:09:937 120.31
4 2021-02-25 19:09:037 120.35
(308329, 2)
Time g42ko_fuell_hires
0 2021-02-25 19:09:637 118.95
1 2021-02-25 19:09:737 118.94
2 2021-02-25 19:09:837 118.95
3 2021-02-25 19:09:937 118.90
4 2021-02-25 19:09:037 118.85
(308329, 2)
我如下调用 pd.merge
df_final = pd.merge(dfs[0],dfs[1],on='Time',how='inner')
我得到的是
Time g41ko_fuell_hires g42ko_fuell_hires
0 2021-02-25 19:09:637 120.34 118.95
1 2021-02-25 19:09:637 120.34 118.71
2 2021-02-25 19:09:637 120.34 119.90
3 2021-02-25 19:09:637 120.34 119.70
4 2021-02-25 19:09:637 120.34 119.25
... ... ... ...
18318296 2021-02-26 03:43:971 119.42 119.55
18318297 2021-02-26 03:43:971 119.42 119.76
18318298 2021-02-26 03:43:971 119.42 120.15
18318299 2021-02-26 03:43:971 119.42 120.29
18318300 2021-02-26 03:43:971 119.42 120.50
[1000 rows x 3 columns]
(18318301, 3)
所以很明显,第一个数据帧的第一个条目像叉积一样重复。我希望最终有 308329 行,每行有两个数据列。
我究竟做错了什么?
解决方案
发现错误。
时间列看起来像时间,但它是对象(由于从 grafana 错误导出而导致格式错误:YYYY-MM-DD HH:mm:ss.SSS
需要)。
所以我需要将时间列转换为
df0['Time'] = pd.to_datetime(df0['Time'], format='%Y-%m-%d %H:%M:%S.%f')
比一切都好。
推荐阅读
- javascript - 在运行时替换我网站特定页面中所有出现的字符串
- ios - 为什么 Cordova ios Vue 组件在迁移到 WKWebview 后仅在重新加载应用程序时显示?
- javascript - 使用 Mozilla PDFJS 如何显示所有页面而不是单个页面
- google-apps-script - 如何增加通过 google app 脚本发送的邮件计数,因为它限制了每次发送 100 封邮件
- linux - Docker awslogs 给出错误 NoCredentialProviders
- python - Pytest中如何实现交替等待两个元素?尝试除了不匹配
- powershell - Powershell 复制和重命名文件夹
- javascript - Chart.js 图形溢出容器
- r - 如何在“R Session Aborted”运行编译代码时找到 Fortran 错误消息?
- netflix-conductor - 为什么 netflix 指挥不提供异步运行任务/子工作流的方法?