【问题标题】:Merge two dataframes but get ValueError合并两个数据框但得到 ValueError
【发布时间】:2020-07-05 07:01:00
【问题描述】:

当我在“日期”上合并两个数据帧(行数不同)时,如下所示,我收到错误 ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat。我查看了答案 here 并将两个数据框中的日期转换为 str 但我仍然收到错误消息。我也尝试将Dates 转换为int,但这会导致另一个错误ValueError: invalid literal for int() with base 10: '1919-01-01'。我不太确定如何解决这个问题。

df_trial.columns =  ['Date', df_trial.columns[1]]
df_trial['Date'] = df_trial['Date'].astype(str)
df_fly.columns = ['Date', df_fly.columns[1]]
df_fly['Date'] = df_fly['Date'].astype(str)
df_trial = df_trial.merge(df_fly, left_on='Date', right_index=True).reset_index() ##Error

df_fly=
          Date       AGG
0    2003-10-01 -0.007216
1    2003-11-01 -0.000123
2    2003-12-01  0.001782
3    2004-01-01  0.009108

df_trial=
            Date   AAA
0     1919-01-01  4.09
1     1919-02-01  1.45
2     1919-03-01  5.21

【问题讨论】:

  • 直接合并日期列df_trial.merge(df_fly, on='Date', how='outer')

标签: pandas dataframe


【解决方案1】:

这可能有效 -

For inner join :
pd.merge(df_fly, df_trial, on='Date')

For outer join :
pd.merge(df_fly, df_trial, on='Date', how='outer')

只需确保两个数据帧中Date 列的type 相同即可。

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 2020-03-12
    • 1970-01-01
    • 2019-08-11
    • 2012-10-08
    • 2017-08-15
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多