如何df_name_serial_number让所有唯一值 df_name_serial_number从顶部开始?
我将举两个例子,两种情况下的数据都是一样的,第一个例子中数据是有序的,第二个例子中数据是混合的(接近真实的)。必须从中的顶部开始选择唯一值df_name_serial_number。
初始数据:
import pandas as pd
from itertools import combinations
#создаем df
df = pd.DataFrame(data={'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12], 'D': [13, 14, 15, 16], 'E': [17, 18, 19, 20], 'F': [21, 22, 23, 24], 'G': [25, 26, 27, 28], 'H': [29, 30, 31, 32], 'L': [33, 34, 35, 36], 'K': [37, 38, 39, 40], 'M': [41, 42, 43, 44], 'P': [45, 46, 47, 48]})
#создаем df_name_serial_number
cols = df.columns.to_list()
nums = list(range(len(cols)))
df_name_serial_number = pd.DataFrame(
[[f"{cols[a]}_{cols[b]}", a, b] for a, b in list(combinations(nums, 2))],
columns="name serial_number1 serial_number2".split())
- 例子
提供此示例以供理解:
df_name_serial_number
name serial_number1 serial_number2
0 A_B 0 1
1 A_C 0 2
2 A_D 0 3
3 A_E 0 4
4 A_F 0 5
5 A_G 0 6
6 A_H 0 7
7 A_L 0 8
8 A_K 0 9
9 A_M 0 10
10 A_P 0 11
11 B_C 1 2
12 B_D 1 3
13 B_E 1 4
14 B_F 1 5
15 B_G 1 6
16 B_H 1 7
17 B_L 1 8
18 B_K 1 9
19 B_M 1 10
20 B_P 1 11
21 C_D 2 3
22 C_E 2 4
23 C_F 2 5
24 C_G 2 6
25 C_H 2 7
26 C_L 2 8
27 C_K 2 9
28 C_M 2 10
29 C_P 2 11
30 D_E 3 4
31 D_F 3 5
32 D_G 3 6
33 D_H 3 7
34 D_L 3 8
35 D_K 3 9
36 D_M 3 10
37 D_P 3 11
38 E_F 4 5
39 E_G 4 6
40 E_H 4 7
41 E_L 4 8
42 E_K 4 9
43 E_M 4 10
44 E_P 4 11
45 F_G 5 6
46 F_H 5 7
47 F_L 5 8
48 F_K 5 9
49 F_M 5 10
50 F_P 5 11
51 G_H 6 7
52 G_L 6 8
53 G_K 6 9
54 G_M 6 10
55 G_P 6 11
56 H_L 7 8
57 H_K 7 9
58 H_M 7 10
59 H_P 7 11
60 L_K 8 9
61 L_M 8 10
62 L_P 8 11
63 K_M 9 10
64 K_P 9 11
65 M_P 10 11
df_name_serial_number 如何做出这样的结果,让STARTING FROM THE TOP中只剩下唯一值?如果仔细观察,所有三列都有唯一值:
df_name_serial_number
name serial_number1 serial_number2
0 A_B 0 1
1 C_D 2 3
2 E_F 4 5
3 G_H 6 7
4 L_K 8 9
5 M_P 10 11
- 例子
在这种情况下,或者更确切地说,它们总是会混合在一起df_name_serial_number。
name serial_number1 serial_number2
0 A_K 0 9
1 A_E 0 4
2 F_P 5 11
3 A_C 0 2
4 B_D 1 3
5 A_G 0 6
6 K_P 9 11
7 A_L 0 8
8 A_B 0 1
9 A_M 0 10
10 A_P 0 11
11 B_C 1 2
12 A_F 0 5
13 B_E 1 4
14 B_F 1 5
15 B_G 1 6
16 B_H 1 7
17 B_L 1 8
18 B_K 1 9
19 B_M 1 10
20 B_P 1 11
21 C_D 2 3
22 C_E 2 4
23 C_F 2 5
24 C_G 2 6
25 C_H 2 7
26 C_L 2 8
27 C_K 2 9
28 C_M 2 10
29 C_P 2 11
30 D_E 3 4
31 D_F 3 5
32 D_G 3 6
33 D_H 3 7
34 D_L 3 8
35 D_K 3 9
36 D_M 3 10
37 D_P 3 11
38 E_F 4 5
39 E_G 4 6
40 E_H 4 7
41 E_L 4 8
42 E_K 4 9
43 E_M 4 10
44 E_P 4 11
45 F_G 5 6
46 F_H 5 7
47 F_L 5 8
48 F_K 5 9
49 F_M 5 10
50 A_D 0 3
51 G_H 6 7
52 G_L 6 8
53 G_K 6 9
54 G_M 6 10
55 G_P 6 11
56 H_L 7 8
57 H_K 7 9
58 H_M 7 10
59 H_P 7 11
60 L_K 8 9
61 L_M 8 10
62 L_P 8 11
63 K_M 9 10
64 A_H 0 7
65 M_P 10 11
如何做出这个结果?只留下独一无二的价值观STARTING FROM THE TOP在一切df_name_serial_number:
df_name_serial_number
name serial_number1 serial_number2
0 A_K 0 9
2 F_P 5 11
4 B_D 1 3
22 C_E 2 4
51 G_H 6 7
61 L_M 8 10
试试这样:
结果: