8

如果我有两个已经按兼容键排序的数据帧(或系列),我希望能够便宜地将它们合并在一起并保持排序。除了通过 concat() 和显式 sort() 之外,我看不到其他方法

a = pd.DataFrame([0,1,2,3], index=[1,2,3,5], columns=['x'])
b = pd.DataFrame([4,5,6,7], index=[0,1,4,6], columns=['x'])
print pd.concat([a,b])
print pd.concat([a,b]).sort()

   x
1  0
2  1
3  2
5  3
0  4
1  5
4  6
6  7

   x
0  4
1  0
1  5
2  1
3  2
4  6
5  3
6  7

看起来已经有一些与 numpy 数组相关的讨论,建议使用“交错”方法,但我还没有找到一个好的答案。

4

1 回答 1

1

如果我们将问题限制为a只有b一列,那么我会走这条路:

s = a.merge(b, how='outer', left_index=True, right_index=True)
s.stack().reset_index(level=1, drop=True)
于 2013-05-10T14:55:26.020 回答