對于重型機械,人們通常需要知道機器運行的小時數。我有一個包含開始時間和結束時間的資料框。每次使用機器時,我都會計算使用機器的分鐘數。這會產生一列df['minutes']。
如何將分鐘轉換為小時?對于 3,346 分鐘,我應該得到 55 小時 46 分鐘,或者55:46.
將此用作作業示例:
df = pd.DataFrame(columns = ['minutes'], data =[3346])
如果我使用它,我會得到
07:46:df['duration'] = pd.to_datetime(df['minutes'], unit='m').dt.strftime('%H:%M')如果我使用它,我會得到
03 07:46 07:46:df['duration'] = pd.to_datetime(df['minutes'], unit='m').dt.strftime('%d %H:%M')為什么是三(03)?
我還嘗試將 apply 和 gmtime 用于分鐘列,它回傳
03 07:46:def dur_time1(x): x*=60 x = time.gmtime(x) x = time.strftime("%d %H:%M", x) return x df['duration'] = df['minutes'].apply(dur_time1)最后,我嘗試對分鐘列使用 apply 和 timedelta,它回傳
2 days 07:46:00:def dur_time2(x): x*=60 x = timedelta(seconds = x) return x df['duration'] = df['minutes'].apply(dur_time2)我可以忍受 2 天,我可以將其拆分并乘以 24。但這似乎令人費解。
但是這些解決方案都沒有顯示 55 小時 46 分鐘。
uj5u.com熱心網友回復:
你可以使用這個功能:
def minutes_to_hours(minutes : int):
time = '{}:{}'.format(minutes//60,minutes%60)
return time
輸出 :
55:46
uj5u.com熱心網友回復:
您的結果絕對沒有問題。Python 做了你想讓它做的事。
案例 1:您要求 python 在時間組件中為您提供小時和分鐘。
df['duration'] = pd.to_datetime(df['minutes'], unit='m').dt.strftime('%H:%M')
案例 2:您要求 python 在時間組件中為您提供天數、小時數和分鐘數。
pd.to_datetime(df['minutes'], unit='m').dt.strftime('%d %H:%M')
從檔案%d執行以下操作;

python是一個C編譯器。在 C 中tm_mday從 1 開始查找下/前幾天。簡單的說;
strftime() takes an
argument of data type time_t, which represents calendar time.
When interpreted as an absolute time value, it represents the
number of seconds elapsed since the Epoch, 1970-01-01 00:00:00
0000 (UTC)
在您的情況下,因為您55.766667 hours在此時間組件中將其strftime('%d %H:%M')解釋為3rd day, 7th Hour 46th Minute since the Epoch, 1970-01-01 00:00:00 0000 (UTC). 如果您將其更改為pd.to_datetime(df['minutes'], unit='m').dt.strftime('%d %I:%M'),您會意識到它用 0 填充它。
如果您想找到確切的時間分量計數,請使用numpy 的日期時間單位
df['minutes'].astype('timedelta64[m]')/60
如上所述,numpy 的日期時間單位中的時間跨度是 64 位整數乘以日期或單位長度的范圍。這是span for ‘D’ (day) is exactly 24 times longer than the time span for ‘h’ (hour)將分鐘轉換為精確時間分量的條件
uj5u.com熱心網友回復:
divmod 也是一種選擇:
def minutes_to_hours(minutes: int):
return '{}:{}'.format(*divmod(minutes,60))
uj5u.com熱心網友回復:
您可以使用該divmod功能:
In [1]: import pandas as pd
In [2]: def minutes_to_hour_representation(minutes: int) -> str:
...: hours, remaining_mins = divmod(minutes, 60)
...: return f'{hours:02}:{remaining_mins:02}'
...:
In [3]: df = pd.DataFrame(columns=['minutes'], data=[3346, 36, 66])
In [4]: df
Out[4]:
minutes
0 3346
1 36
2 66
In [5]: df['hours'] = df['minutes'].map(lambda m: minutes_to_hour_representation(m))
In [6]: df
Out[6]:
minutes hours
0 3346 55:46
1 36 00:36
2 66 01:06
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401840.html
上一篇:繞過歐盟同意請求
下一篇:在特殊字符后添加空格
