我有一个 Pandas 数据框df:
df = pd.DataFrame(data = {'v1': ['b', 'b', 'c', 'a', 'd', 'c', 'd', 'c', 'f', 'e'],
'v2': ['a', 'a', 'd', 'b', 'c', 'e', 'c', 'd', 'g','c'],
'v3': [3.3, 2.9, 3.5, 4.7, 5.1, 1.1, 2.3, 3.4, 4.7, 6.1]})
v1 v2 v3
0 b a 3.3
1 b a 2.9
2 c d 3.5
3 a b 4.7
4 d c 5.1
5 c e 1.1
6 d c 2.3
7 c d 3.4
8 f g 4.7
9 e c 6.1
我想生成的结果如下:
v1 v2 v3
0 b a 3.3
1 b a 2.9
3 a b 4.7
2 c d 3.5
4 d c 5.1
6 d c 2.3
7 c d 3.4
5 c e 1.1
9 e c 6.1
8 f g 4.7
即,堆叠具有相同对的 v1 和 v2 的行。
v1 = a, v2 = b 和 v1 = b, v2 = a 不相等(我们不能交换 v1 和 v2) 但它们被认为在同一组中。我怎样才能做到?
感谢任何帮助!
请您参考如下方法:
以类似的方式,使用argsort:
df.iloc[pd.Series(
[tuple(x) for x in np.sort(df.iloc[:, :2], axis=1)]).argsort()
]
v1 v2 v3
0 b a 3.3
1 b a 2.9
3 a b 4.7
2 c d 3.5
4 d c 5.1
6 d c 2.3
7 c d 3.4
5 c e 1.1
9 e c 6.1
8 f g 4.7
