我嘗試在我的 Pandas 框架中以“hr hr: min min :sec sec”形式將我的列從物件轉換為日期時間 64,因為我想過濾幾個小時。
我試過new['Time'] = pd.to_datetime(new['Time'], format='%H:%M:%S').dt.time這根本沒有影響(它仍然是一個物件)。我也試過new['Time'] = pd.to_datetime(new['Time'],infer_datetime_format=True)
得到錯誤資訊: TypeError: <class 'datetime.time'> is not convertible to datetime
我希望能夠對我的資料框進行數小時排序。
- 如何將物件轉換為小時?
- 然后我可以按小時過濾(例如上午 8 點之后的所有內容)還是我必須輸入精確的分鐘和秒值來過濾它?
謝謝
uj5u.com熱心網友回復:
如果你希望你df['Time']的型別datetime64只是使用
df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S')
print(df['Time'])
這將導致以下列
0 1900-01-01 00:00:00
1 1900-01-01 00:01:00
2 1900-01-01 00:02:00
3 1900-01-01 00:03:00
4 1900-01-01 00:04:00
...
1435 1900-01-01 23:55:00
1436 1900-01-01 23:56:00
1437 1900-01-01 23:57:00
1438 1900-01-01 23:58:00
1439 1900-01-01 23:59:00
Name: Time, Length: 1440, dtype: datetime64[ns]
如果你只是想提取時間戳程度小時pd.to_datetime(...)通過.dt.hour
如果您想每小時對您的值進行分組,您還可以使用(轉換df['Time']為日期時間后):
new_df = df.groupby(pd.Grouper(key='Time', freq='H'))['Value'].agg({pd.Series.to_list})
這將回傳按小時分組的所有值。
uj5u.com熱心網友回復:
IIUC,你已經有一個time來自datetime模塊的結構:
假設這個資料框:
from datetime import time
df = pd.DataFrame({'Time': [time(10, 39, 23), time(8, 47, 59), time(9, 21, 12)]})
print(df)
# Output:
Time
0 10:39:23
1 08:47:59
2 09:21:12
幾個操作:
# Check if you have really `time` instance
>>> df['Time'].iloc[0]
datetime.time(10, 39, 23)
# Sort values by time
>>> df.sort_values('Time')
Time
1 08:47:59
2 09:21:12
0 10:39:23
# Extract rows from 08:00 and 09:00
>>> df[df['Time'].between(time(8), time(9))]
Time
1 08:47:59
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373228.html
上一篇:將類物件撰寫為多行字串
下一篇:在Java中向物件添加多個元素
