【发布时间】:2018-09-13 09:28:27
【问题描述】:
我有两个数据框,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
非常感谢任何帮助!
【问题讨论】:
标签: python pandas dataframe merge multi-index