+-
晚上好,
我有一个dataframe(Pandas),其列表示日期,格式如下:
print(df["date"])
14/01/18 12:47
14/01/18 12:48
14/01/18 12:50
14/01/18 12:57
14/01/18 12:57
14/01/18 12:57
14/01/18 12:57
14/01/18 12:57
14/01/18 12:58
具体来说,我想:
1.使用pd.to_datetime将其转换为datetime
2.创建以下其他列:
df["month"]
df["day"]
df["year"]
df["hour"]
df["minute"]
我试着跑:
df['date'] = pd.to_datetime(df['date'], format = "%d/%m/%Y %H/%M" )
但是出现以下错误:
time data '02/01/18 08:41' does not match format '%d/%m/%Y %H/%M' (match)
最佳答案
除了grovina的答案以外,您还可以直接使用dt访问器,而不是使用apply.
这是一个示例:
>>> data = [['2017-12-01'], ['2017-12-30'],['2018-01-01']]
>>> df = pd.DataFrame(data=data, columns=['date'])
>>> df
date
0 2017-12-01
1 2017-12-30
2 2018-01-01
>>> df.date
0 2017-12-01
1 2017-12-30
2 2018-01-01
Name: date, dtype: object
注意df.date是一个对象吗?让它变成您想要的日期
>>> df.date = pd.to_datetime(df.date)
>>> df.date
0 2017-12-01
1 2017-12-30
2 2018-01-01
Name: date, dtype: datetime64[ns]
所需的格式用于字符串格式.我认为您无法将实际的datetime64转换为这种格式.现在,让我们在单独的列中创建日期格式的字符串格式
>>> df['new_formatted_date'] = df.date.dt.strftime('%d/%m/%y %H:%M')
>>> df.new_formatted_date
0 01/12/17 00:00
1 30/12/17 00:00
2 01/01/18 00:00
Name: new_formatted_date, dtype: object
最后,由于df.date列的日期现在为datetime64,因此您可以直接使用dt访问器.无需申请
>>> df['month'] = df.date.dt.month
>>> df['day'] = df.date.dt.day
>>> df['year'] = df.date.dt.year
>>> df['hour'] = df.date.dt.hour
>>> df['minute'] = df.date.dt.minute
>>> df
date new_formatted_date month day year hour minute
0 2017-12-01 01/12/17 00:00 12 1 2017 0 0
1 2017-12-30 30/12/17 00:00 12 30 2017 0 0
2 2018-01-01 01/01/18 00:00 1 1 2018 0 0
点击查看更多相关文章
转载注明原文:python-pd.to_datetime小时和秒 - 乐贴网