按数据帧中的ID对每个组的最后一行应用更改



对于下一个数据帧,我想修改每个集群最后一行的两列。

发动机0发动机发动机4[/tr>
counter 方向
ENG0IN
ESP06输出
FRA24输出
发动机3输出

不需要使用apply,这里我们可以使用具有布尔索引的矢量化解决方案:

m = ~df.duplicated('ID', keep='last')
df.loc[m, 'counter'] += 1
df.loc[m, 'exit_to'] = np.where(df.loc[m, 'direction'] == 'OUT', 'E', 'W')

结果

print(df)
ID  counter direction exit_to
0   0        1       OUT     NaN
1   0        0        IN     NaN
2   0        7       OUT       E
3   1        5        IN     NaN
4   1        6        IN       W
5   2        5       OUT       E