Python中merge_asof的问题

1 投票
1 回答
21 浏览
提问于 2025-04-13 01:22

我正在尝试把两个 pandas 数据框根据用户和最近的时间(向前查找)合并在一起。我的代码是这样的:

df1 = df1.sort_values([ 'user_id', 'withdrawal_request_date']).reset_index(drop = True)
deposits = deposits.sort_values(['user_id', 'deposit_date']).reset_index(drop = True)

d_merged = pd.merge_asof(deposits, df1, left_on='deposit_date', right_on = 'withdrawal_request_date', by='user_id', direction='forward')

但是,我一直收到这个错误:

ValueError: 左侧的键必须是排序过的

我试着去掉时区,但错误还是一样。此外,正如你所看到的,我也尝试过重置索引,但还是没有解决问题。

1 个回答

1

根据用户ID排序并不是必须的,因为接下来会用到精确的连接。只需要根据左连接和右连接的列来排序,也就是提款请求日期和存款日期。

df1 = df1.sort_values(['withdrawal_request_date'])
deposits = deposits.sort_values(['deposit_date'])

撰写回答