python - 为什么 pandas.merge() 会生成额外的行?
问题描述
我有 5 个要统一的数据集。问题是其中一些数据可能丢失或者它们可能没有同步(时间戳偏移)。我考虑合并所有 Timestamp 列以获得一个公共 Timestamp 列。
temp_1 = pd.merge(a["Timestamp"],a1["Timestamp"],how='outer',on='Timestamp').sort_values(by="Timestamp").reset_index(drop=True)
temp_2 = pd.merge(a2["Timestamp"],a3["Timestamp"],how='outer',on='Timestamp').sort_values(by="Timestamp").reset_index(drop=True)
temp_3 = pd.merge(temp_1["Timestamp"],temp_2["Timestamp"],how='outer',on='Timestamp').sort_values(by="Timestamp").reset_index(drop=True)
temp_4 = pd.merge(temp_3["Timestamp"],a4["Timestamp"],how='outer',on='Timestamp').sort_values(by="Timestamp").reset_index(drop=True)
当我打印数据集的所有长度时,我看到长度已经改变。
print(len(a),len(a1),len(a2),len(a3),len(a4),len(temp_1),len(temp_2),len(temp_4))
52561 52561 52560 52561 52560 52573 52573 52742
如果我们只看到 temp_1 数据集,行中的增加可能表明时间戳值不同,所以我检查它是否与以下代码行有关。
(a['Timestamp']==a1['Timestamp']).all()
True
在这里我可以看到两列是相同的。
这怎么可能?如果“时间戳”列相同,则合并应提供具有相同长度的数据框。
最好的问候,伊帕。
解决方案
推荐阅读
- virtualbox - VboxManage guestcontrol VBOX_E_IPRIT_ERROR (0x80bb0005),指定的用户无法登录来宾,上下文:WaitForArray
- reactjs - Axios 错误处理 err.response 对象
- node.js - 将 nguniversal/express-engine 添加到 Angular 项目:“在 /src/app/app.module.ts 中找不到 BrowserModule 导入”
- c - 如何更改C中链表中节点的数据?
- c++ - 无法分配 C++ 数组
- javascript - 如果 id 有特定的类,使用 JS/jQuery Show() + Hide() 排序?
- python - TypeError:无法将 int 隐式转换为 str
- verilog - 为什么数组不能为 wdata 赋值?
- python - 使用 Python 在 BigQuery 中创建表的范围分区
- python - 是否可以在不访问内置函数的情况下将 ASCII 整数转换为字符?