[英]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.diff
與Series.dt.total_seconds
和Series.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.