pandas 如何删掉第一行_python pandas:有条件地删除每个组的第一行

这篇博客介绍了如何在Python的Pandas数据帧中,针对特定条件删除每个tid组的第一行。内容涉及到根据tid分组、排序、识别并移除那些tid组内第一个且event为'END'的行。示例数据帧展示了线程内部的开始和结束事件,以及在处理过程中遇到的问题和期望的输出。博主还提到了试图通过`df.sort(['tid', 'datetime']).groupby('tid').first().event == 'END'`来解决问题,但未成功。" 3492651,478886,Android多媒体框架详解:Open Core与Media APIs,"['Android开发', '多媒体处理', '播放器']
摘要由CSDN通过智能技术生成

使用python3.6和Pandas 0.19.2

我有这样一个数据帧:tid datetime event data

0 0 2017-03-22 10:59:59.864 START NaN

1 0 2017-03-22 10:59:59.931 END NaN

2 0 2017-03-22 10:59:59.935 START NaN

3 1 2017-03-22 10:59:59.939 END NaN

4 0 2017-03-22 10:59:59.940 END NaN

5 1 2017-03-22 10:59:59.941 START NaN

6 1 2017-03-22 10:59:59.945 END NaN

7 0 2017-03-22 10:59:59.947 START NaN

8 1 2017-03-22 10:59:59.955 START NaN

它包含线程内部发生的事务的开始日期和结束日期(tid是线程id)。遗憾的是,事务本身没有唯一的ID,因此我需要按tid对这些行进行分组,按日期排序,然后将行2乘2,这样每个事务都有1个开始和1个结束。在

我当前的问题是,我的初始数据帧可能会错过每个线程的第一个开始事件(在上面的示例中,索引为3的行是一个没有前一个开始的结束事件)。我需要把那些结束线去掉,但我不知道怎么做。

最后一个没有匹配的结束行的开始行也有相同的问题。在

样本输入

^{pr2}$

预期输出

相同的数据帧,但删除了#2行,因为它是Tid 1的第一行,不是开始事件:tid datetime event

0 0 2017-03-22 10:59:59.864 START

1 0 2017-03-22 10:59:59.931 END

3 1 2017-03-22 10:59:59.933 START

4 1 2017-03-22 10:59:59.945 END

5 0 2017-03-22 10:59:59.947 START

6 0 2017-03-22 10:59:59.955 END

顺便说一句,如果你最终得到的是:tid start_datetime stop_datetime

0 0 2017-03-22 10:59:59.864 2017-03-22 10:59:59.931

1 1 2017-03-22 10:59:59.933 2017-03-22 10:59:59.945

2 0 2017-03-22 10:59:59.947 2017-03-22 10:59:59.955

我尝试过的

df.sort(['tid', 'datetime']).groupby('tid').first().event == 'END'不包含数据帧中的初始索引,因此无法使用它删除行。(或者,如果可以的话,我不知道该怎么做)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值