Python, как изменить формат времени из файла CSV - PullRequest
0 голосов
/ 01 ноября 2018

После использования 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 голосов
/ 01 ноября 2018

Для получения правильной даты используйте:

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

EDIT

Чтобы разделить 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
0 голосов
/ 01 ноября 2018
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
0 голосов
/ 01 ноября 2018

Просто используйте 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

Панды преобразуют его в дату и время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...