【发布时间】:2019-08-01 11:00:57
【问题描述】:
我正在尝试在我尝试合并的条目中合并两个具有重复行的 pandas 数据框(这里的行由 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
我该怎么做?
【问题讨论】:
-
不会 drop_duplicates 完成这项工作吗?