我有按原点和目的地对分组的数据。我想将组中的第一行与组中的其他行进行比较。如果一行符合某些条件,那么我想标记它。以下是我的数据的快照:
Orig Dest Route Vol Per VolPct
ORD ICN A 2,251 0.64 0.78
ORD ICN B 366 0.97 0.13
ORD ICN C 142 0.14 0.05
ORD ICN D 100 0.22 0.03
ORD ICN E 25 1.00 0.01
如果一行有一个" VolPct" > =。1,然后将其与第1行进行比较。所以在这个例子中,路由B将与路由A进行比较。如果" Per"之间的差异。路线B和路线A的路线是> = .2,然后我想通过放置" X"来标记路线B.在一个新专栏中。在此示例中,路由B将被标记。预期的输出将如下所示:
Orig Dest Route Vol Per VolPct Flag
ORD ICN A 2,251 0.64 0.78
ORD ICN B 366 0.97 0.13 x
ORD ICN C 142 0.14 0.05
ORD ICN D 100 0.22 0.03
ORD ICN E 25 1.00 0.01
有任何建议如何解决这个问题?我正在使用Pandas和Python 3.6。谢谢你的帮助!
答案 0 :(得分:2)
IIUC,您可以使用groupby
+ first
执行此操作。使用np.where
确定Flag
的值。
i = df.VolPct >= .1
j = (df.Per - df.groupby('Orig').Per.transform('first') >= .2)
df['Flag'] = np.where(i & j, 'X', '')
df
Orig Dest Route Vol Per VolPct Flag
0 ORD ICN A 2,251 0.64 0.78
1 ORD ICN B 366 0.97 0.13 X
2 ORD ICN C 142 0.14 0.05
3 ORD ICN D 100 0.22 0.03
4 ORD ICN E 25 1.00 0.01