繁体   English   中英

计算 Pandas 同一列中两个日期之间的时间差

[英]Calculate time difference between two dates in the same column in Pandas

我有一个包含多个数据时间的列(DATE),我想找到从日期到日期的分钟差异并将其存储到一个新列(time_interval)中。

这是我尝试过的:

df['time_interval'] = (df['DATE'],axis=0 - df['DATE'],axis=1) * 24 * 60

这些是我正在处理的数据时间

这就是我正在寻找的输出:

根据您存储差异的方式,或者

df = pd.DataFrame(data=['01-01-2006 00:53:00',
                        '01-01-2006 01:53:00',
                        '01-01-2006 02:53:00',
                        '01-01-2006 03:53:00',
                        '01-01-2006 04:53:00'],
                  columns=['DATE'])
df['DATE'] = pd.to_datetime(df['DATE'])
df['time_interval'] = df['DATE'].diff().fillna(timedelta(0)).apply(lambda x: x.total_seconds() / 60)

要得到

                 DATE  time_interval
0 2006-01-01 00:53:00            0.0
1 2006-01-01 01:53:00           60.0
2 2006-01-01 02:53:00           60.0
3 2006-01-01 03:53:00           60.0
4 2006-01-01 04:53:00           60.0

或者

df['time_interval'] = df['DATE'].diff().shift(-1).fillna(timedelta(0)).apply(lambda x: x.total_seconds() / 60)

要得到

                 DATE  time_interval
0 2006-01-01 00:53:00           60.0
1 2006-01-01 01:53:00           60.0
2 2006-01-01 02:53:00           60.0
3 2006-01-01 03:53:00           60.0
4 2006-01-01 04:53:00            0.0

pandas.Series.dt.minute

您可以将 TimeSeries 移动 1,然后减去。 TimeDelta 对于 TimeSeries 数学很有用。

ts = pd.to_datetime(["2000-01-01 00:34:00", "2000-01-01 02:27:00", "2000-01-01 03:04:00", "2000-01-01 04:05:05"])
datetime_series = pd.DataFrame(ts, columns=['Date'])
datetime_series['ts_Delta'] = datetime_series.Date - datetime_series.shift(1).Date # shift by 1
datetime_series['ts_Delta_Minute'] = (datetime_series.Date - datetime_series.shift(1).Date).dt.total_seconds() / 60 # select DateTime and convert to total seconds, then divide by 60 for minutes
datetime_series['Time_Delta'] = pd.to_timedelta(datetime_series['ts_Delta_Minute']) # useful for TimeSeries math
datetime_series

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM