Я пытаюсь объединить два кадра данных панд, которые имеют повторяющиеся строки (здесь строки, состоящие из 2, соответствующих 'a' и 'b'), среди записей, которые я пытаюсь объединить.В результате pandas берет декартово произведение повторяющихся строк, как показано ниже:
In [8]: df1 = pd.DataFrame({'a' : [1, 2, 2], 'b' : [2, 2, 2], 'c' : [3, 6, 6]})
In [9]: df2 = pd.DataFrame({'a' : [2, 2], 'b' : [2, 2], 'd' : [2, 5]})
In [10]: df1.merge(df2, how='outer', on=['a', 'b'])
Out[10]:
a b c d
0 1 2 3 NaN
1 2 2 6 2.0
2 2 2 6 5.0
3 2 2 6 2.0
4 2 2 6 5.0
В результате я хочу, чтобы слияние выполнялось только один раз между каждой повторяющейся строкой, в порядке их появления(в данном случае численно по индексу).Итак, вывод, который я хотел бы получить:
In [12]: df_output = pd.DataFrame({'a' : [1, 2, 2], 'b' : [2, 2, 2], 'c' : [3, 6
...: , 6], 'd' : [np.nan, 2, 5]})
In [13]: df_output
Out[13]:
a b c d
0 1 2 3 NaN
1 2 2 6 2.0
2 2 2 6 5.0
Как бы я это сделал?