でテーブルをマージするには、私は概念的に、このようになります。データフレームを持っている:Pythonのパンダ - 自体
ID SUM Stime Etime
3 10.0 18:00:00 18:09:59
2 12.0 18:15:00 18:26:59
3 3.0 18:36:00 18:38:59
4 3.0 18:36:00 18:38:59
5 59.0 18:00:00 18:58:59
12 10.0 17:00:00 17:09:59
12 16.0 18:24:00 18:39:59
7 16.0 18:24:00 18:39:59
8 19.0 18:40:00 18:58:59
12 19.0 18:40:00 18:58:59
10 19.0 18:40:00 18:58:59
11 3.0 18:03:00 18:05:59
12 11.0 18:59:00 18:09:59
STIMEとETIME COLSは、DateTime型からです。
SUMは、StimeとEtimeの間の分数です。
私がする必要があるのは、特定の人物(ID)の場合、終了時刻の直後にStimeが来たら、2行を単位にしてSUMを更新するようにテーブルを更新することです。例えば
ここでは、ID=12
ための第1 ETIMEは18:39:59
であり、第二STIMEは18:40:00
ある - 右の午前18時39分59秒後に来る、また、第二ETIMEが18:58:59
であり、第3 STIMEが18:59:00
である - 右の到来します18:58:59以降 - 私は3行をユニット化し、この人のSUMを更新して46
(16 + 19 + 11)にしたいと思います。
私はmerge
を使用しようとしましたが、問題はそれが正確に2行だけではなく、3以上で正しくマージされていることです。
「ID」でグループ化し、Etime-Stimeの違いを合計する必要があります。その後、元のdfに参加することができます。 – knagaev
しかし、時間が連続している場合にのみ、それらを合計したいと思います。例えばここでは、他のレコードと連続していないので、 'ID = 12'の最初のレコードを合計したくありません。 –