我有以下两个熊猫数据框:
df1 = pd.DataFrame([[21,80,180],[23,95,191],[36,83,176]], columns = ["age", "weight", "height"])
df2 = pd.DataFrame([[22,88,184],[39,84,196],[23,95,190]], columns = ["age", "weight", "height"])
df1:
age weight height
0 21 80 180
1 23 95 191
2 36 83 176
df2:
age weight height
0 22 88 184
1 39 84 196
2 23 95 190
我想比较两个数据帧并获得两个数据帧的索引,其中一个数据帧中的age
和weight
等于第二个数据帧中的age
和weight
数据框。在这种情况下,结果将是:
matching_indices = [1,2] #[df1 index, df2 index]
我知道如何使用iterrows()
来实现这一点,但是我更喜欢耗时较少的东西,因为我拥有的数据集相对较大。你有什么想法吗?
答案 0 :(得分:2)
使用merge
和默认内部联接,使用reset_index
将索引转换为列,以防止丢失此信息:
df = df1.reset_index().merge(df2.reset_index(), on=['age','weight'], suffixes=('_df1','_df2'))
print (df)
index_df1 age weight height_df1 index_df2 height_df2
0 1 23 95 191 2 190
print (df[['index_df1','index_df2']])
index_df1 index_df2
0 1 2