我有两个表,需要在日期列上加入。我想保留两个表中的所有日期,每个表中的空行只是用最终组合数组中的
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
感谢任何帮助,谢谢。
您需要使用
merge
,而不是join
:
merged = df1.merge(df2, how="outer", on=["Date"])