[英]How to calculate the time difference in a data frame in python?
我想知道如何以 __ 天、__ 小時、__ 分鍾、__ s 的格式獲取時差
例如,第 0 行和第 1 行之間的時間差為 0 天 10 小時 10 分鍾 27 秒
data = {'date': ['2020/06/24', '2020/06/25', '2020/06/27', '2020/06/30'],
'time': ['23:00:28', '09:10:55', '03:42:58','16:45:51']}
pd.DataFrame(data)
>>>
date time
0 2020/06/24 23:00:28
1 2020/06/25 09:10:55
2 2020/06/27 03:42:58
3 2020/06/30 16:45:51
假設這是您的數據集
data = {'date': ['2020/06/24', '2020/06/25', '2020/06/27', '2020/06/30'],
'time': ['23:00:28', '09:10:55', '03:42:58','16:45:51']}
df = pd.DataFrame(data)
print(df)
date time
0 2020/06/24 23:00:28
1 2020/06/25 09:10:55
2 2020/06/27 03:42:58
3 2020/06/30 16:45:51
使用 pd.to_datetime 將數據轉換為正確的日期時間格式后,您可以使用pd.to_datetime
.diff
df['date_time'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df['time_diff'] = df['date_time'].diff()
print(df)
date time date_time time_diff
0 2020/06/24 23:00:28 2020-06-24 23:00:28 NaT
1 2020/06/25 09:10:55 2020-06-25 09:10:55 0 days 10:10:27
2 2020/06/27 03:42:58 2020-06-27 03:42:58 1 days 18:32:03
3 2020/06/30 16:45:51 2020-06-30 16:45:51 3 days 13:02:53
嘗試:
df = df.assign(datetime_diff=pd.to_datetime(df['date'] + " " + df['time'])
.diff()
)
.diff()
讓你與眾不同
data = {'date': ['2020/06/24', '2020/06/25', '2020/06/27', '2020/06/30'],
'time': ['23:00:28', '09:10:55', '03:42:58','16:45:51']}
df = pd.DataFrame(data)
df['datetime'] = df['date'] + " "+df['time']
df['datetime'] = pd.to_datetime(df['datetime'])
df['diff'] = df['datetime'].diff()
如果要更改格式:
def convert_format(diff):
diff_list = diff.split(":")
if(len(diff_list)<3):
return diff
return diff_list[0] + " hrs" + diff_list[1] + " mins " + diff_list[2] +" secs"
df['diff_str'] = df['diff'].astype(str).apply(convert_format)
Output:
date time datetime diff_str
0 2020/06/24 23:00:28 2020-06-24 23:00:28 [NaT]
1 2020/06/25 09:10:55 2020-06-25 09:10:55 0 days 10 hrs10 mins 27 secs
2 2020/06/27 03:42:58 2020-06-27 03:42:58 1 days 18 hrs32 mins 03 secs
3 2020/06/30 16:45:51 2020-06-30 16:45:51 3 days 13 hrs02 mins 53 secs
你想要這個嗎?
data = {'date': ['2020/06/24', '2020/06/25', '2020/06/27', '2020/06/30'],
'time': ['23:00:28', '09:10:55', '03:42:58','16:45:51']}
df = pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df['diff'] = df['timestamp'] - df['timestamp'].shift(1)
df['diff'] = df['diff'].astype(str).apply(lambda x: x.replace(' days', '').replace(' ', ':').split(':'))
df['diff'] = df['diff'].apply(lambda x: f"{x[0]}days {x[1]}hours {x[2]}minutes {x[3]}seconds" if x[0] != 'NaT' else '')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.