python时间戳转换为没有指定年份的日期时间

我有一个包含一年时间序列数据的 csv 文件,其中时间戳看起来像下面插入的代码。关于数据的一件事是30 年平均每小时天气数据,因此没有指定带有时间戳的年份。


Date

01-01T01:00:00

01-01T02:00:00

01-01T03:00:00

01-01T04:00:00

01-01T05:00:00

01-01T06:00:00

01-01T07:00:00

01-01T08:00:00

01-01T09:00:00

01-01T10:00:00

01-01T11:00:00

01-01T12:00:00

01-01T13:00:00

01-01T14:00:00

01-01T15:00:00

01-01T16:00:00

01-01T17:00:00

01-01T18:00:00

01-01T19:00:00

01-01T20:00:00

01-01T21:00:00

01-01T22:00:00

01-01T23:00:00

我可以很好地读取 csv 文件:


df = pd.read_csv('weather_cleaned.csv', index_col='Date', parse_dates=True)


如果我这样做pd.to_datetime(df)会出错: ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing


有人有任何将我的 df 转换为日期时间的提示吗?


墨色风雨
浏览 219回答 2
2回答

斯蒂芬大帝

您可以传递date_parser参数(检查文档),例如import pandas as pdfrom datetime import datetimedf = pd.read_csv('weather_cleaned.csv', index_col='Date', parse_dates=['Date'],                   date_parser=lambda x: datetime.strptime(x, '%d-%mT%H:%M:%S'))print(df.head())输出Empty DataFrameColumns: []Index: [1900-01-01 01:00:00, 1900-01-01 02:00:00, 1900-01-01 03:00:00, 1900-01-01 04:00:00, 1900-01-01 05:00:00]当然你可以定义不同的功能,也许指定不同的年份等等。例如,如果你想要 2020 年而不是 1900 年使用date_parser=lambda x: datetime.strptime(x, '%d-%mT%H:%M:%S').replace(year=2020)注意我假设它是日月格式,相应地更改格式字符串。编辑:更改我的示例以反映日期列应用作索引。

吃鸡游戏

您可以做的一件事是附加一个默认年份: pd.to_datetime('2020-' + df['Date'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python