我有一个数据帧,其中包含一些用于多个设备的遥测数据。每行都有设备ID和时间戳以及其他一些字段。我要删除每个设备的第一个(最早的)条目。我该怎么办?
例如,我的数据可能像这样
timestamp, device id, val1, val2, val3
2018-01-02 18:01 123 0 1 1
2018-01-02 18:05 124 1 3 2
2018-01-02 18:06 123 4 5 5
2018-01-02 18:02 125 2 7 2
2018-01-02 18:07 124 6 2 2
我想删除设备123的最早条目,设备124的最早条目和设备125的最早条目(即使它是唯一的条目)
答案 0 :(得分:2)
您可以使用groupby和idxmax
df.loc[df.groupby('device id').timestamp.idxmin(), :]
timestamp device id val1 val2 val3
0 2018-01-02 18:01:00 123 0 1 1
1 2018-01-02 18:05:00 124 1 3 2
3 2018-01-02 18:02:00 125 2 7 2
df.loc[df.index.difference(df.groupby('device id').timestamp.idxmin()), :]
timestamp device id val1 val2 val3
2 2018-01-02 18:06:00 123 4 5 5
4 2018-01-02 18:07:00 124 6 2 2