我有按来源和目的地对分组的数据。我想将组中的第一行与组中的其他行进行比较。如果一行满足某些条件,那么我想标记它。下面是我的数据快照:
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
Run Code Online (Sandbox Code Playgroud)
如果一行的“VolPct”>=.1,则将其与第一行进行比较。所以在这个例子中,路线 B 将与路线 A 进行比较。如果路线 B 和路线 A 的“Per”之间的差异 >= .2,那么我想通过在一个“X”中放置一个“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
Run Code Online (Sandbox Code Playgroud)
任何建议如何解决这个问题?我正在使用 Pandas 和 Python 3.6。谢谢你的帮助!
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |