我是使用時間序列分析對股票進行定量分析的初學者,并打算將 Pandas 系列中的資料列轉換為日期時間格式。早些時候,該系列的索引是
infy.index
輸出:
Index(['03-01-2000', '04-01-2000', '05-01-2000', '06-01-2000', '07-01-2000',
'10-01-2000', '11-01-2000', '12-01-2000', '13-01-2000', '14-01-2000',
...
'16-04-2021', '19-04-2021', '20-04-2021', '22-04-2021', '23-04-2021',
'26-04-2021', '27-04-2021', '28-04-2021', '29-04-2021', '30-04-2021'],
dtype='object', name='Date', length=5306)
目前,格式為 DD-MM-YYYY。所以現在,我應用了以下代碼來更改格式
infy = pd.to_datetime(infy.index)
infy.head()
輸出:
DatetimeIndex(['2000-03-01', '2000-04-01', '2000-05-01', '2000-06-01',
'2000-07-01', '2000-10-01', '2000-11-01', '2000-12-01',
'2000-01-13', '2000-01-14',
...
'2021-04-16', '2021-04-19', '2021-04-20', '2021-04-22',
'2021-04-23', '2021-04-26', '2021-04-27', '2021-04-28',
'2021-04-29', '2021-04-30'],
dtype='datetime64[ns]', name='Date', length=5306, freq=None)
所以,問題是前幾個日期的格式是 YYYY-DD-MM,但如果你看最后,格式現在是 YYYY-MM-DD。我以為我在將 DataFrame 轉換為 Series 時可能在開始時犯了一些錯誤,但是經過多次重新檢查,我找不到任何問題。
為什么會這樣?
uj5u.com熱心網友回復:
日期時間默認格式pandas為 YYYY-MM-DD。所以它總是顯示datetime具有該格式的物件。如果您想以其他格式顯示日期,您可以使用:
date_as_strings=pd.to_datetime(infy.index).dt.strftime("%y-%d-%m")
注意:strftime將型別更改為字串。
uj5u.com熱心網友回復:
pd.to_datetime,無需任何額外引數,可以靈活地決議給定日期的具有多種格式的單個列。雖然這可能非常強大,但它也非常有問題。
這里的主要問題是dayfirst引數 的默認pd.to_datetime值為False.
這意味著對于您的前幾個日期,它可以正確決議,因為第一部分 <= 12,pandas 會將其決議為 MM-DD-YYYY (dayfirst因此False月份首先出現)。稍后,當它遇到第一部分大于 12 的日期時,它很聰明地知道一年中只有 12 個月,因此它假定格式為 DD-MM-YYYY 并決議這些日期。
這顯然不是您想要的行為,因此您應該指定dayfirst=True或傳遞適用于所有日期的特定格式。
pd.to_datetime(infy.index, format='%d-%m-%Y')
# or
pd.to_datetime(infy.index, dayfirst=True)
DatetimeIndex(['2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06',
'2000-01-07', '2000-01-10', '2000-01-11', '2000-01-12',
'2000-01-13', '2000-01-14',
...
'2021-04-16', '2021-04-19',
'2021-04-20', '2021-04-22', '2021-04-23', '2021-04-26',
'2021-04-27', '2021-04-28', '2021-04-29', '2021-04-30'],
dtype='datetime64[ns]', freq=None)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/412848.html
標籤:
上一篇:如何將字串時間轉換為日期時間
