【问题标题】:Trying to merge 2 dataframes but receiving value error of merging object and int32 columns尝试合并 2 个数据帧但收到合并对象和 int32 列的值错误
【发布时间】:2021-10-27 11:22:45
【问题描述】:

我一直在尝试解决here中提到的问题

我一直在尝试使用日期列表来过滤数据框,一位非常亲切的人正在帮助我,但现在使用当前代码,我收到了这些错误。

# Assign a sequential number to each trading day
df_melt_test_percent = df_melt_test_percent.sort_index().assign(DayNumber=lambda x: range(len(x)))

# Find the indices of the FOMC_dates
tmp = pd.merge(
   df_FOMC_dates, df_melt_test_percent[['DayNumber']],
   left_on='FOMC_date', right_on='DayNumber'
)

# For each row, get the FOMC_dates ± 3 days
tmp['delta'] = tmp.apply(lambda _: range(-3, 4), axis=1)

tmp = tmp.explode('delta')
tmp['DayNumber'] += tmp['delta']

# Assemble the result
result = pd.merge(tmp, df_melt_test_percent, on='DayNumber')

数据帧的屏幕截图:

如果有人对如何解决此问题有任何建议,将不胜感激。

编辑#1:

【问题讨论】:

  • 要合并的列在两个数据框中的类型不同,可能一个是字符串,另一个是 int。合并前应转换为相同类型
  • 这能回答你的问题吗? Trying to merge 2 dataframes but get ValueError
  • 图片上没有''DayNumber''栏,所以不清楚你有什么问题
  • 尝试将其更改为tmp = pd.merge(..., right_index=True)。你提到你在那之后得到空白result。你能发布一些数据以便我处理吗?
  • @CodeDifferent 通过设置right_index = True,错误消失了,但数据框显示不正确。编辑 OP 以显示。

标签: python-3.x pandas dataframe


【解决方案1】:

要合并的列在两个数据框中的类型不同。可能一个是字符串另一个整数。您应该在合并之前转换为相同的类型。假设从您展示的那一点点来看,在合并之前,运行:

tmp['DayNumber'] = tmp['DayNumber'].astype(int)

或者:

df_melt_test_percent['DayNumber'] = df_melt_test_percent['DayNumber'].astype(str)

注意。这可能不起作用,因为您没有提供完整的示例。自己搜索正确的类型或提供可重现的示例。

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 2019-02-26
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2019-06-02
    相关资源
    最近更新 更多