python - Pandas:用于合并两个多索引 DataFrame 的类似 merge_asof 的解决方案?

标签 python pandas dataframe merge multi-index

我有两个数据帧,df1df2 说,它们都是多索引的。

在第一个索引级别,两个数据帧共享相同的键(即 df1.index.get_level_values(0)df2.index.get_level_values(0) 包含相同的元素)。这些键是无序的字符串,例如 ['foo','bar','baz']

在第二个索引级别,两个数据帧都有时间戳,这些时间戳是有序的,但间隔不等。

我的问题如下。我想以这样的方式合并 df1df2,对于级别 1 的每个键,应该将 df2 的值插入到df1 不改变 df1 的顺序。

我尝试使用 pd.mergepd.merge_asofpd.MultiIndex.searchsorted。从这些方法的描述来看,似乎其中一个应该对我有用,但我不知道怎么做。理想情况下,我想找到一种解决方案,避免循环遍历 index.get_level_values(0) 中的键,因为我的数据帧可能会变大。

一些失败的尝试说明:

df_merged = pd.merge(left=df1.reset_index(), right=df2.reset_index(),
                     left_on=[['some_keys', 'timestamps_df1']], right_on=[['some_keys', 'timestamps_df2']],
                     suffixes=('', '_2')
                     ) # after sorting
# FAILED

df2.index.searchsorted(df1, side='right') # after sorting
# FAILED

非常感谢任何帮助!

最佳答案

根据您的描述,这是merge_asof的解决方案

df_merged = pd.merge_asof(left=df1.reset_index(), right=df2.reset_index(),
                     left_on=['timestamps_df1'], right_on=['timestamps_df2'],by='some_keys',
                     suffixes=('', '_2')
                     )

关于python - Pandas:用于合并两个多索引 DataFrame 的类似 merge_asof 的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49640490/

相关文章:

python - 在 Pandas 中更快地计算相关矩阵

python - 将 Pandas 列拆分为多列

r - 如何获取具有前 10 个最高值的变量的列名?

Python 多重处理和目录创建

python - 在 python 中将制表符分隔文件编写为 json 对象

python - 注释 seaborn Factorplot

python - 从 Pandas 中的假人重建分类变量

python - 如何在 pandas 数据框中每月/每周绘制日期

data.frame 和 data.table 的 R 对象具有相同的类型?

python - 使 Twisted 应用程序的某些部分可重新加载的策略或支持?