2 回答

TA貢獻1842條經驗 獲得超22個贊
這可能是關于您的 DataFrame 在編輯器中的顯示方式的顯示配置問題。以正確格式獲取數據的最簡單方法是:
df['Date'] = pd.to_datetime(df['Date'], format = '%Y%m')
以下是repl.it使用您的 DataFrame 和此代碼的結果。日期格式正確,沒有時間部分,并且具有正確的 dtype。
Date Region Data
0 2002-01-01 A 8.8
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 1 non-null datetime64[ns]
1 Region 1 non-null object
2 Data 1 non-null float64
dtypes: datetime64[ns](1), float64(1), object(1)
memory usage: 152.0+ bytes
您還可以嘗試一種更復雜的方法,從日期時間到日期字符串再回到日期時間。
df['Date'] = pd.to_datetime(df['Date'], format = '%Y%m').dt.date
df['Date'] = df['Date'].astype('datetime64[ns]')
最終顯示和 dtype 是相同的。
Date Region Data
0 2002-01-01 A 8.8
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 1 non-null datetime64[ns]
1 Region 1 non-null object
2 Data 1 non-null float64
dtypes: datetime64[ns](1), float64(1), object(1)
memory usage: 152.0+ bytes

TA貢獻1856條經驗 獲得超5個贊
問題中的日期列的格式為 YYYYMM(但沒有天數)。該函數pd.to_datetime()隱式地將日設置為 1。
該函數pd.Period()將 YYYYMM 格式的日期轉換為 pandas 句點。請注意,df['Date'] 可以是字符串或 6 位整數。
df['Date'].apply(lambda x: pd.Period(x, freq='M'))
0 2002-01
1 2002-01
2 2020-05
3 2020-05
Name: Date, dtype: period[M]
添加回答
舉報