python如何从csv文件更改时间格式

时间:2018-11-01 09:48:41

标签: python dataframe time

使用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

3 个答案:

答案 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分为datetime,请使用:

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