我有两只大熊猫df,看起来像这样:
df1:
pid Name score age
100 Ram 3 36
101 Tony 2 40
101 Jack 4 56
200 Jill 6 30
df2
pid Name score age
100 Ram 3 36
101 Tony 2 40
101 John 4 51
101 Jack 9 32
200 Jill 6 30
两个df都用'pid'索引。我想比较一下df1& df2基于列'得分'。即,我只需要保留df2中与df1匹配的索引和得分值。
我的预期结果应为
new df2:
pid Name index age
100 Ram 3 36
101 Tony 2 40
101 John 4 51
200 Jill 6 30
对此方面的任何帮助表示高度赞赏。
答案 0 :(得分:1)
按pid
和score
列使用merge
,但首先按照reset_index
从索引创建列,再次创建最后一个创建pid
索引的列以及相同的列新的DataFrame
按df2.columns
添加reindex
:
df = (pd.merge(df1.reset_index(),
df2.reset_index(), on=['score', 'pid'], how='left', suffixes=['_',''])
.set_index('pid')
.reindex(columns=df2.columns))
print (df)
Name score age
pid
100 Ram 3 36
101 Tony 2 40
101 John 4 51
200 Jill 6 30
输入:
print (df1)
Name score age
pid
100 Ram 3 36
101 Tony 2 40
101 Jack 4 56
200 Jill 6 30
print (df2)
Name score age
pid
100 Ram 3 36
101 Tony 2 40
101 John 4 51
101 Jack 9 32
200 Jill 6 30