Разделить столбец datetime64 на столбец даты и времени в фрейме данных pandas

Если у меня есть dataframe с первым столбцом, являющимся столбцом datetime64. Как разбить этот столбец на 2 новых столбца, столбец даты и столбец времени. Вот мои данные и код до сих пор:

DateTime,Actual,Consensus,Previous
20140110 13:30:00,74000,196000,241000
20131206 13:30:00,241000,180000,200000
20131108 13:30:00,200000,125000,163000
20131022 12:30:00,163000,180000,193000
20130906 12:30:00,193000,180000,104000
20130802 12:30:00,104000,184000,188000
20130705 12:30:00,188000,165000,176000
20130607 12:30:00,176000,170000,165000
20130503 12:30:00,165000,145000,138000
20130405 12:30:00,138000,200000,268000
...


import pandas as pd
nfp = pd.read_csv("NFP.csv", parse_dates=[0])
nfp

выдает:

Out[10]: <class 'pandas.core.frame.DataFrame'>
         Int64Index: 83 entries, 0 to 82
         Data columns (total 4 columns):
         DateTime     82  non-null values
         Actual       82  non-null values
         Consensus    82  non-null values
         Previous     82  non-null values
         dtypes: datetime64[ns](1), float64(3)

все хорошо, но не знаю, что делать отсюда.

два момента, в частности, я не уверен:

  1. можно ли это сделать, когда я читаю файл csv в первую очередь? Если да, то как?
  2. может любой одна помощь покажет мне, как сделать сплит, как только я выполнил csv_read?

и где я могу посмотреть такую информацию?

имея трудное время найти подробную ссылку на библиотеки классов спасибо!

1 ответов


как разобрать CSV непосредственно в нужный фрейм данных:

передайте дикт функций в pandas.read_csv ' s converters ключевое слово аргумент:

import pandas as pd
import datetime as DT
nfp = pd.read_csv("NFP.csv", 
                  sep=r'[\s,]',              # 1
                  header=None, skiprows=1,
                  converters={               # 2
                      0: lambda x: DT.datetime.strptime(x, '%Y%m%d'),  
                      1: lambda x: DT.time(*map(int, x.split(':')))},
                  names=['Date', 'Time', 'Actual', 'Consensus', 'Previous'])

print(nfp)

доходность

        Date      Time  Actual  Consensus  Previous
0 2014-01-10  13:30:00   74000     196000    241000
1 2013-12-06  13:30:00  241000     180000    200000
2 2013-11-08  13:30:00  200000     125000    163000
3 2013-10-22  12:30:00  163000     180000    193000
4 2013-09-06  12:30:00  193000     180000    104000
5 2013-08-02  12:30:00  104000     184000    188000
6 2013-07-05  12:30:00  188000     165000    176000
7 2013-06-07  12:30:00  176000     170000    165000
8 2013-05-03  12:30:00  165000     145000    138000
9 2013-04-05  12:30:00  138000     200000    268000
  1. sep=r'[\s,]' говорит read_csv для разделения строк csv на регулярное выражение шаблон r'[\s,]' -- пробел или запятую.
  2. на