Разделить столбец 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)
все хорошо, но не знаю, что делать отсюда.
два момента, в частности, я не уверен:
- можно ли это сделать, когда я читаю файл csv в первую очередь? Если да, то как?
- может любой одна помощь покажет мне, как сделать сплит, как только я выполнил 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
-
sep=r'[\s,]'
говоритread_csv
для разделения строк csv на регулярное выражение шаблонr'[\s,]'
-- пробел или запятую. - на