pandas 如何基于公共的3列合并3个数据框

pvabu6sv  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(154)

我有三个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的行不匹配。

jjhzyzn0

jjhzyzn01#

您需要确保匹配的列的数据类型相同。错误消息告诉您df_1中的合并列具有datetime类型,而df_2中的合并列具有object类型。
这是因为你在df_1中匹配Date,在df_2中匹配Product,这不是你想要的。
根据您的解释,您希望合并两个数据框中共享列DatePlantProduct相同值的记录。在这种情况下,请尝试:

df = df_1.merge(
    df_2,
    on=['Date','Plant','Product'],
    how='outer'
)

相关问题