如何计算多列的逐行比较?
How to compute row-wise comparison of multiple columns?
我得到了一个table,里面有很多点信息,我需要在对之前的四个字段进行逐行比较后填写位置字段。
如果 X 坐标和 Y 坐标以及 ID_01 都相等,则需要比较 ID_02 才能将“结束”分配到较低 [=20= 的位置字段中] 值,因此值为 35 的行和“开始”进入行等于 36 的行,因为它更大。
X-Coordinate
Y-Coordinate
ID_01
ID_02
Position
45000
554000
15
35
?
45000
554000
15
36
?
94475
59530
1
1
94491
60948
1
1
94491
60948
1
2
94151
64480
1
2
94151
64480
1
3
95408
68694
1
3
95408
68694
1
4
94703
69961
1
4
94703
69961
1
5
93719
70786
1
5
93719
70786
1
6
95310
72044
1
6
95310
72044
1
7
99525
82049
1
7
99525
82049
1
8
101600
84306
1
8
102744
85032
1
9
101600
84306
1
9
102744
85032
1
10
104155
86535
1
10
104575
86430
1
11
例如,您将如何处理 pandas 数据框?
您可以使用布尔掩码。首先按 ID_02
对您的值进行排序,然后检查重复值。行设置为 True
的位置有 End
位置,另一个 Start
位置:
m = df.sort_values('ID_02').duplicated(['X-Coordinate', 'Y-Coordinate', 'ID_01'])
df['Position'] = np.where(m, 'End', 'Start')
print(df)
# Output
X-Coordinate Y-Coordinate ID_01 ID_02 Position
0 45000 554000 15 35 Start
1 45000 554000 15 36 End
我得到了一个table,里面有很多点信息,我需要在对之前的四个字段进行逐行比较后填写位置字段。
如果 X 坐标和 Y 坐标以及 ID_01 都相等,则需要比较 ID_02 才能将“结束”分配到较低 [=20= 的位置字段中] 值,因此值为 35 的行和“开始”进入行等于 36 的行,因为它更大。
X-Coordinate | Y-Coordinate | ID_01 | ID_02 | Position |
---|---|---|---|---|
45000 | 554000 | 15 | 35 | ? |
45000 | 554000 | 15 | 36 | ? |
94475 | 59530 | 1 | 1 | |
94491 | 60948 | 1 | 1 | |
94491 | 60948 | 1 | 2 | |
94151 | 64480 | 1 | 2 | |
94151 | 64480 | 1 | 3 | |
95408 | 68694 | 1 | 3 | |
95408 | 68694 | 1 | 4 | |
94703 | 69961 | 1 | 4 | |
94703 | 69961 | 1 | 5 | |
93719 | 70786 | 1 | 5 | |
93719 | 70786 | 1 | 6 | |
95310 | 72044 | 1 | 6 | |
95310 | 72044 | 1 | 7 | |
99525 | 82049 | 1 | 7 | |
99525 | 82049 | 1 | 8 | |
101600 | 84306 | 1 | 8 | |
102744 | 85032 | 1 | 9 | |
101600 | 84306 | 1 | 9 | |
102744 | 85032 | 1 | 10 | |
104155 | 86535 | 1 | 10 | |
104575 | 86430 | 1 | 11 |
例如,您将如何处理 pandas 数据框?
您可以使用布尔掩码。首先按 ID_02
对您的值进行排序,然后检查重复值。行设置为 True
的位置有 End
位置,另一个 Start
位置:
m = df.sort_values('ID_02').duplicated(['X-Coordinate', 'Y-Coordinate', 'ID_01'])
df['Position'] = np.where(m, 'End', 'Start')
print(df)
# Output
X-Coordinate Y-Coordinate ID_01 ID_02 Position
0 45000 554000 15 35 Start
1 45000 554000 15 36 End