首页 > 解决方案 > 为什么 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

在这里我可以看到两列是相同的。

这怎么可能?如果“时间戳”列相同,则合并应提供具有相同长度的数据框。

最好的问候,伊帕。

标签: pythonpython-3.xpandas

解决方案


推荐阅读