如果模式的分数为80或更高,则df1和df2具有行。每个模式的行按从最高到最低的顺序排列。
DF1:
>>> df1 = pd.DataFrame({'pattern': ['a','a','b'],'score':[100, 80, 85]})
>>> df1.set_index('pattern',inplace=True)
>>> df1
score
pattern
a 100
a 80
b 85
DF2:
>>> df2 = pd.DataFrame({'pattern': ['a','b'],'score':[90, 95]})
>>> df2.set_index('pattern',inplace=True)
>>> df2
score
pattern
a 90
b 95
我想要一个合并的数据框,其中每个模式的最高分数在同一行,每个模式的第二高分数在下面的行上,依此类推。 df1或df2中的任何行都需要在合并的数据帧中。如果df1中的模式有更多分数,那么我想要df2的单元格中的默认值,如null,0,-1(不重要):
score_df1 score_df2
pattern
a 100 90
a 80 0
b 85 95
如果df1的模式行数多于df2(或反之亦然),我可以重复分数:
>>> pd.merge(df1, df2, left_index=True, right_index=True, suffixes=['_df1','_df2'])
score_df1 score_df2
pattern
a 100 90
a 80 90
b 85 95
但是如何获取默认/空值?
答案 0 :(得分:0)
只做外连接:
pd.merge(df1, df2, left_index=True, right_index=True, suffixes=['_df1','_df2'], how='outer')