簡體   English   中英

迭代 Pandas dataframe 上的唯一日期

[英]Iterate over unique dates on a Pandas dataframe

我有一個像這樣的 pandas dataframe

id        date      time    dif
01  2020-04-02  09:44:00
02  2020-04-02  09:50:23
03  2020-04-02  09:54:56
04  2020-04-03  10:24:42
05  2020-04-03  10:32:12
06  2020-04-03  11:12:21
...

我要做的是計算每一行與每天前一行之間的時間差(以分鍾為單位)。 所以結果應該是這樣的

id        date      time    dif
01  2020-04-02  09:44:00      6
02  2020-04-02  09:50:23      4
03  2020-04-02  09:54:56
04  2020-04-03  10:24:42      7
05  2020-04-03  10:32:12     40
06  2020-04-03  11:12:21
...

我的第一個想法是創建一個包含日期列唯一值的列表並嘗試了這個:

import pandas a dp
import numpy as np

...

dates = df.date.unique()

for d in dates:
  df['dif'] = round(df['time'].diff(-1).dt.total_seconds().div(60),0) * -1

但我認為這並不容易...

DataFrameGroupBy.diffSeries.dt.total_secondsSeries.round一起使用:

df['time'] = pd.to_timedelta(df['time'])

df['dif'] = df.groupby('date')['time'].diff(-1).dt.total_seconds().div(60).round().mul(-1)

或使用DataFrameGroupBy.shift減去:

df['dif'] = (df.groupby('date')['time'].shift(-1)
               .sub(df['time'])
               .dt.total_seconds()
               .div(60)
               .round())
print (df)
   id        date     time   dif
0   1  2020-04-02 09:44:00   6.0
1   2  2020-04-02 09:50:23   5.0
2   3  2020-04-02 09:54:56   NaN
3   4  2020-04-03 10:24:42   8.0
4   5  2020-04-03 10:32:12  40.0
5   6  2020-04-03 11:12:21   NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM