我有以下從 Pandas 資料框架中提取的串列。它基本上是一個開始日期和時間以及一個結束日期和時間,我想找到它們之間的差異
。start_date = ['29.12.2020', '29. 12.2020', '30.12.2020', '30.12.2020', '30.12.2020']
start_time = [datetime.time(11, 10), datetime.time(23, 15), datetime. time(5, 15), datetime. time(11, 15), datetime.time(17, 15) ]
end_date = ['29.12.2020'/span>, '30.12.2020'/span>, '30. 12.2020', '30.12.2020', '30.12.2020']
end_time = [datetime.time(23, 15), datetime.time(5, 15), datetime. time(11, 15), datetime. time(17, 15), datetime.time(23, 15) ]
因此,我想把日期和時間連接起來,在時間上有一個起點和一個終點,并以HH:MM的格式找到這兩者之間的差異。
例如,如果我們采取第一行,這兩個時間點之間的差異應該是12:05(12小時5分鐘)
事先感謝您的支持。
事先謝謝你,我希望我的解釋很清楚:)
uj5u.com熱心網友回復:
start_date = ['29.12.2020'/span>, '29. 12.2020', '30.12.2020', '30.12.2020', '30.12.2020']
start_time = [datetime.time(11, 10), datetime.time(23, 15), datetime. time(5, 15), datetime. time(11, 15), datetime.time(17, 15) ]
end_date = ['29.12.2020'/span>, '30.12.2020'/span>, '30. 12.2020', '30.12.2020', '30.12.2020']
end_time = [datetime.time(23, 15), datetime.time(5, 15), datetime. time(11, 15), datetime. time(17, 15), datetime.time(23, 15) ]
df = pd.DataFrame(data={'start_date': start_date,
'start_time': start_time,
'end_date': end_date。
'end_time': end_time})
df['start_date_time'] = pd. to_datetime(df['start_date'] ' ' df['start_time'].astype(str)
df['end_date_time'] = pd. to_datetime(df['end_date'] ' ' df['end_time'].astype(str)
df['diff'] = (df['end_date_time'] - df['start_date_time'] )
df['hours'] = df['diff']/ np.timedelta64(1, 'h')
df['HH:MM'] = df['hours'].astype(int) 。 astype(str) ':' ((df['diff']/np. timedelta64(1, 'm')) - (df['hours'] 。 astype(int)*60)).astype(int). astype(str)
print(df[['start_date_time', 'end_date_time', 'HH:MM']] )
輸出:
start_date_time end_date_time HH:MM
0 2020-12-29 11:10: 00 2020-12-29 23: 15:00 12:5
1 2020-12-29 23:15: 00 2020-12-30 05: 15: 00 6: 0
2 2020-12-30 05:15。 00 2020-12-30 11: 15:00 6:03 2020-12-30 11:15。 00 2020-12-30 17: 15:00 6:04 2020-12-30 17:15: 00 2020-12-30 23: 15: 00 6: 0
uj5u.com熱心網友回復:
你可以試試這個。
你可以試試這個。
import datetime
start_date = ['29.12.2020'/span>, '29.12.2020'/span>, '30. 12.2020', '30.12.2020', '30.12.2020']
start_time = [datetime.time(11, 10), datetime.time(23, 15), datetime. time(5, 15), datetime. time(11, 15), datetime.time(17, 15) ]
end_date = ['29.12.2020'/span>, '30.12.2020'/span>, '30. 12.2020', '30.12.2020', '30.12.2020']
end_time = [datetime.time(23, 15), datetime.time(5, 15), datetime. time(11, 15), datetime. time(17, 15), datetime.time(23, 15) ]
for start_d, start_t, end_d, end_t in zip(start_date, start_time,end_date, end_time)。
start_date_time = datetime.datetime.strptime(start_d, '%d.%m.%Y')
start_date_time = start_date_time.replace(hour=start_t.hour, minute=start_t.minute)
end_date_time = datetime.datetime.strptime(end_d, '%d.%m.%Y')
end_date_time = end_date_time.replace(hour=end_t.hour, minute=end_t.minute)
time_diff = end_date_time - start_date_time
diff_str = f"{time_diff.day}days {time_diff. 秒//3600}小時 {(time_diff.seconds//60)%60}分鐘 "/span>
print(diff_str)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309194.html
標籤:
上一篇:如何使用map函式將一個含有嵌套串列的dict的資料框架重新映射?
下一篇:<p>我正在使用Bootstrap5中的手風琴組件,我想通過自己的JavaScript函式(下面的例子中的<code>toggle</code>)來切換該組件。最好
