Как загрузить файл с датой и временем в качестве объекта datetime в Python?
Нужно загрузить этот файл с датой в первом столбце и HH:MM
во второй колонке
Как это работает с numpy.genfromtxt()
? Может быть, панды?
Мой файл выглядит так:
2017-Feb-11 00:00 m 4.87809 1.86737 5.04236 0.27627 1.5995
2017-Feb-11 00:05 m 4.86722 1.86711 5.00023 0.27616 1.5965
2017-Feb-11 00:10 m 4.85641 1.86690 4.95810 0.27604 1.5941
2 ответа
In [32]: df = pd.read_csv(filename, delim_whitespace=True, parse_dates=[0], header=None)
In [33]: df[1] = pd.to_timedelta(df[1] + ':00')
In [34]: df
Out[34]:
0 1 2 3 4 5 6 7
0 2017-02-11 00:00:00 m 4.87809 1.86737 5.04236 0.27627 1.5995
1 2017-02-11 00:05:00 m 4.86722 1.86711 5.00023 0.27616 1.5965
2 2017-02-11 00:10:00 m 4.85641 1.86690 4.95810 0.27604 1.5941
In [35]: df.dtypes
Out[35]:
0 datetime64[ns]
1 timedelta64[ns]
2 object
3 float64
4 float64
5 float64
6 float64
7 float64
dtype: object
PS вы не можете иметь datetime
dtype без компонента даты в Pandas - вот почему я преобразовал его в timedelta
DTYPE. В качестве альтернативы вы можете объединить первые два столбца в одном datetime
колонка:
In [29]: df['date'] = pd.to_datetime(df.pop(0) + ' ' + df.pop(1) + ':00')
In [30]: df
Out[30]:
2 3 4 5 6 7 date
0 m 4.87809 1.86737 5.04236 0.27627 1.5995 2017-02-11 00:00:00
1 m 4.86722 1.86711 5.00023 0.27616 1.5965 2017-02-11 00:05:00
2 m 4.85641 1.86690 4.95810 0.27604 1.5941 2017-02-11 00:10:00
In [31]: df.dtypes
Out[31]:
2 object
3 float64
4 float64
5 float64
6 float64
7 float64
date datetime64[ns]
dtype: object
import pandas
? Нет, используйте numpy.genfromtxt()
инструмент лучше:
Что ж, загрузка полного, тяжеловесного пакета только для этого преобразования возможна, но довольно неловко.
Как ваш другой вопрос уже начал проверять numpy.genfromtxt()
полномочия, продолжай идти
converters = { 0: lambda aSTR: datetime.datetime.strptime( aSTR, "%Y-%b-%d" ),
# WARNING: ^
# |
# above presented conversion specifier is locale-dependent
# so revise code if used
# in other locale domains
1: lambda aSTR: getTimeDelta( aSTR ),
}
и, наконец, использовать общую практику .datetime
+ .timedelta
aritmetics.
Загрузка полноценного pandas
просто для добавления двух столбцов datetime
значение возможно, но немного [TIME]
-домен и [SPACE]
-домен излишним, не так ли?
: О)