使用pd.read_csv()
之后,我得到以下数据。但是在第一栏中,时间格式是错误的。你能告诉我如何纠正它吗?谢谢。
数据如下所示,第一列应为2017/4/10 9:25:00而不是42835.39236。
datetime open high low close
0 42835.39236 20.72 20.72 20.72 20.72
1 42835.39583 20.72 20.72 20.67 20.67
2 42835.39653 20.66 20.67 20.62 20.63
3 42835.39722 20.63 20.65 20.59 20.59
4 42835.39792 20.59 20.59 20.52 20.52
答案 0 :(得分:2)
只需使用pd.to_datetime
:
In [741]: df
Out[741]:
date
0 42835.39236
In [742]: df['date'] = df['date'].apply(pd.to_datetime)
In [743]: df
Out[743]:
date
0 1970-01-01 00:00:00.000042835
熊猫会将其转换为日期时间。
答案 1 :(得分:2)
要获取正确的日期,请使用:
import datetime as dt
df['datetime'] = pd.TimedeltaIndex(df['datetime'], unit='d') + dt.datetime(1899, 12, 30)
哪个会产生:
datetime open high low close
0 2017-04-10 09:24:59.904 20.72 20.72 20.72 20.72
1 2017-04-10 09:29:59.712 20.72 20.72 20.67 20.67
2 2017-04-10 09:31:00.192 20.66 20.67 20.62 20.63
3 2017-04-10 09:31:59.808 20.63 20.65 20.59 20.59
4 2017-04-10 09:33:00.288 20.59 20.59 20.52 20.52
编辑
要将datetime
分为date
和time
,请使用:
df['date'] = df['datetime'].dt.date
df['time'] = df['datetime'].dt.ceil('min').dt.time
df
# datetime open high low close date time
#0 2017-04-10 09:24:59.904 20.72 20.72 20.72 20.72 2017-04-10 09:25:00
#1 2017-04-10 09:29:59.712 20.72 20.72 20.67 20.67 2017-04-10 09:30:00
#2 2017-04-10 09:31:00.192 20.66 20.67 20.62 20.63 2017-04-10 09:32:00
#3 2017-04-10 09:31:59.808 20.63 20.65 20.59 20.59 2017-04-10 09:32:00
#4 2017-04-10 09:33:00.288 20.59 20.59 20.52 20.52 2017-04-10 09:34:00
答案 2 :(得分:0)
import datetime
尝试一下:
tt = pd.read_csv('aa.csv', parse_dates=True)
print(tt)
它将按照预期打印,如下所示,抱歉,我是这个堆栈溢出的新手,但是此答案有效。
datetime open high low close
9:25:00 AM 20.72 20.72 20.72 20.72
9:30:00 AM 20.72 20.72 20.67 20.67
9:31:00 AM 20.66 20.67 20.62 20.63
9:32:00 AM 20.63 20.65 20.59 20.59
9:33:00 AM 20.59 20.59 20.52 20.52