2 回答

TA贡献1842条经验 获得超21个赞
这可能是关于您的 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]
添加回答
举报