【发布时间】:2017-06-20 19:19:11
【问题描述】:
如果某个模式的分数为 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
但是如何获取默认/空值呢?
【问题讨论】: