【问题标题】:Pandas: Unable to merge on two date columns熊猫:无法合并两个日期列
【发布时间】:2021-11-15 20:07:22
【问题描述】:

我有两个看起来像这样的数据框:

df1:

    Date       Multiplier
0   1995-01-01  5.248256
1   1995-02-01  5.262376
2   1995-03-01  5.255998
3   1995-04-01  5.215762
4   1995-05-01  5.207806

df2:

    PRICE   Date
0   77500   1995-01-01
1   60000   1995-01-01
2   39250   1995-01-01
3   51250   1995-01-01
4   224950  1995-01-01

两个日期列都是使用pd.to_datetime() 方法创建的,并且在使用df1.Date.dtypedf2.Date.dtype 时,它们都应该具有<M8[ns] 数据类型。但是,当尝试将数据帧与 pd.merge(df,hpi,how="left",on="Date") 合并时,出现错误:
ValueError: You are trying to merge on object and datetime64[ns] columns. If you wish to proceed you should use pd.concat

【问题讨论】:

    标签: python pandas dataframe numpy python-datetime


    【解决方案1】:

    尝试将df1Date列转换为datetime64

    先检查dtypes

    >>> df1.dtypes
    Date           object    # <- Not a datetime
    Multiplier    float64
    dtype: object
    
    >>> df2.dtypes
    PRICE             int64
    Date     datetime64[ns]  # <- Right dtype
    dtype: object
    

    转换和合并:

    df1['Date'] = pd.to_datetime(df1['Date'])
    
    out = pd.merge(df1, df2,how='left',on='Date')
    

    【讨论】:

    • 谢谢,我在这玩了这么久,我以为我已经试过了哈哈
    猜你喜欢
    • 2014-10-20
    • 2019-08-08
    • 2020-06-21
    • 2017-08-06
    • 2020-03-05
    • 1970-01-01
    • 2015-08-09
    • 2017-12-29
    相关资源
    最近更新 更多