我有两个数据帧,df1
和 df2
说,它们都是多索引的。
在第一个索引级别,两个数据帧共享相同的键(即 df1.index.get_level_values(0)
和 df2.index.get_level_values(0)
包含相同的元素)。这些键是无序的字符串,例如 ['foo','bar','baz']
。
在第二个索引级别,两个数据帧都有时间戳,这些时间戳是有序的,但间隔不等。
我的问题如下。我想以这样的方式合并 df1
和 df2
,对于级别 1 的每个键,应该将 df2
的值插入到df1
不改变 df1
的顺序。
我尝试使用 pd.merge
、pd.merge_asof
和 pd.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/