在日期时间索引列上连接两个 pandas 数据帧时遇到 ValueError

问题描述 投票:0回答:1

我有两个表,需要在日期列上加入。我想保留两个表中的所有日期,每个表中的空行只是用最终组合数组中的

NaN
填充。我认为外连接就是我正在寻找的。所以我编写了这段代码(其中 data_1 和 data_2 充当我的实际表的模型)

import pandas as pd

def main():
    data_1 = [["May-2024", 10, 5], ["June-2024", 3, 5], ["April-2015", 1, 3]]
    df1 = pd.DataFrame(data_1, columns = ["Date", "A", "B"])
    df1["Date"] = pd.to_datetime(df1["Date"], format="%B-%Y")
    print(df1)

    data_2 = [["01-11-2024", 10, 5], ["01-06-2024", 3, 5], ["01-11-2015", 1, 3]]
    df2 = pd.DataFrame(data_2, columns = ["Date", "C", "D"])
    print(df2)

    merged = df1.join(df2, how="outer", on=["Date"])
    print(merged)

if __name__ == "__main__":
    main()

但是当我尝试对两个 pandas 数据帧执行外连接时,出现错误

ValueError: You are trying to merge on object and int64 columns for key 'Date'. If you wish to proceed you should use pd.concat

我通过打印检查了两列的数据类型

print(df1["Date"].dtype, df2["Date"].dtype)

他们似乎都是

datetime64[ns] datetime64[ns]

日期时间。所以我不太确定为什么我会得到一个

ValueError

感谢任何帮助,谢谢。

python pandas dataframe
1个回答
0
投票

您需要使用

merge
,而不是
join

merged = df1.merge(df2, how="outer", on=["Date"])
© www.soinside.com 2019 - 2024. All rights reserved.