python如何从csv文件更改时间格式
使用python如何从csv文件更改时间格式,python,dataframe,time,Python,Dataframe,Time,使用pd.read\u 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.6
pd.read\u 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
只需使用
pd.to\u 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
Pandas会将其转换为datetime。要获得正确的日期,请使用:
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
试试这个:
tt = pd.read_csv('aa.csv', parse_dates=True)
print(tt)
它将打印如下/按照预期,对不起,我是这个stackoverflow的新手,但这个答案有效
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
输入是什么样子的?您是否将任何参数传递给pd.read_csv()?它看起来像是相对时间,不是吗?这是正确的。我还想问一下如何将第一列拆分为两部分。就像第一行是“2017-04-10 09:24:59.904”,我想得到两列:2017-04-10和09:25:00。谢谢@子排,明白了。最后一个问题是时间太长了。我怎样才能把时间改成正常的方式呢。例如,09:24:59.904000改为09:25:00@齐帕
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