我有三个DataFrame(df_1,df_2,df_3),其中3列(“Date”,“Plant”,“Product”)是共同的,我需要合并它们,这样我就只得到一个DataFrame,其中有这三个共同的列加上其他三个不同的列(“Column1”,“Column2”,“Column3”),每个DataFrame中有一个列。日期工厂产品列1列2列3
我尝试创建一个合并函数,但无法使其考虑多个公共列和多个DataFrame
df = pd.merge(
left=df_1,
right=df_2,
how='outer',
left_on='Date',
right_on='Product',
)
我得到了:
ValueError: You are trying to merge on datetime64[ns] and object columns. If you wish to proceed you should use pd.concat
但是我不想进行concat,因为这三个DataFrame的行不匹配。
1条答案
按热度按时间jjhzyzn01#
您需要确保匹配的列的数据类型相同。错误消息告诉您
df_1
中的合并列具有datetime类型,而df_2
中的合并列具有object类型。这是因为你在
df_1
中匹配Date
,在df_2
中匹配Product
,这不是你想要的。根据您的解释,您希望合并两个数据框中共享列
Date
、Plant
和Product
相同值的记录。在这种情况下,请尝试: