从熊猫数据框中的多个时间序列中删除第一个值

时间:2019-02-04 19:25:23

标签: python pandas

我有一个数据帧,其中包含一些用于多个设备的遥测数据。每行都有设备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的最早条目(即使它是唯一的条目)

1 个答案:

答案 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