2 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個贊
這可能是關(guān)于您的 DataFrame 在編輯器中的顯示方式的顯示配置問題。以正確格式獲取數(shù)據(jù)的最簡單方法是:
df['Date'] = pd.to_datetime(df['Date'], format = '%Y%m')
以下是repl.it使用您的 DataFrame 和此代碼的結(jié)果。日期格式正確,沒有時(shí)間部分,并且具有正確的 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
您還可以嘗試一種更復(fù)雜的方法,從日期時(shí)間到日期字符串再回到日期時(shí)間。
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貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
問題中的日期列的格式為 YYYYMM(但沒有天數(shù))。該函數(shù)pd.to_datetime()隱式地將日設(shè)置為 1。
該函數(shù)pd.Period()將 YYYYMM 格式的日期轉(zhuǎn)換為 pandas 句點(diǎn)。請注意,df['Date'] 可以是字符串或 6 位整數(shù)。
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]
添加回答
舉報(bào)