【发布时间】:2018-01-30 16:19:33
【问题描述】:
假设我有一个数据框:
df = {'date':['20170101', '20170102', '20170103', '20170104']}
我想将'20170101' 转换为'2017-01-01 00:00:00'
我怎样才能实现它?
【问题讨论】:
-
流这个链接,你会得到答案click here
标签: python python-3.x
假设我有一个数据框:
df = {'date':['20170101', '20170102', '20170103', '20170104']}
我想将'20170101' 转换为'2017-01-01 00:00:00'
我怎样才能实现它?
【问题讨论】:
标签: python python-3.x
您可以将日期时间字符串转换为datetime 对象。然后得到你想要的任何格式:
from datetime import datetime
datetime.strptime("20170103", "%Y%m%d").strftime("%Y-%m-%d %H:%M:%S")
输出:
"2017-01-03 00:00:00"
【讨论】:
如果你有pandas.DataFrame,你可以这样做:
pd.to_datetime(df['date'], format='%Y%m%d')
df = pd.DataFrame({'date':['20170101', '20170102', '20170103', '20170104']})
df['date2'] = df['date'].apply(lambda d: dt.datetime.strptime(d, '%Y%m%d'))
df['date3'] = pd.to_datetime(df['date'], format='%Y%m%d')
print(df)
date date2 date3
0 20170101 2017-01-01 2017-01-01
1 20170102 2017-01-02 2017-01-02
2 20170103 2017-01-03 2017-01-03
3 20170104 2017-01-04 2017-01-04
【讨论】:
如果您知道字符串是如何构建的(即YYYYMMDD),您可以简单地使用:
def f(s):
return '{}-{}-{} 00:00:00'.format(s[:4],s[4:6],s[6:])
s = '20170101'
f(s)
Out[7]: '2017-01-01 00:00:00'
【讨论】: