Я загружаю xlsx
файлы, используя pandas.read_excel(..., parse_dates=True, index_col=0, ...)
, с файлами, начинающимися следующим образом:
| UTC Time | Alt | ... |
|----------|------|-----|
| 13:18:44 | 1234 | ... |
| 13:18:45 | 1235 | ... |
| 13:18:46 | 1236 | ... |
| 13:18:47 | 1237 | ... |
Полученный индекс DataFrame
является действительным DateTime
, однако его date()
возвращаеттекущий день, пока в файле ничего не было указано.
Итак, можно ли было бы узнать, как определить значение pandas
по умолчанию на текущую дату, не открывая файл с помощью xlrd
или добавляя первый столбец в качестве дополнительного?столбец данных проанализирован как простая строка?
Спасибо за вашу помощь!
Вот что я получаю с тестовым примером, заботясь об использовании аргумента parse_dates
:
>>> import pandas as pd
>>> import xlrd
>>> fn = "test/dfdr_example 2.xlsx"
>>> data_to_retriev = [3, 4]
Итак, если мы открываем файл «raw», дата не устанавливается, только время:
>>> wb = xlrd.open_workbook(fn)
>>> for row in wb.sheet_by_index(0).get_rows():
... print(row)
[text:'UTC Time (hh:mm:ss)', text:'2 GPS Groundspeed (knots)', text:'Auto Speed Active (discrete)', text:'Approach Identifier Right (ASCII)']
[xldate:0.5816087962962962, number:207.0, text:'engaged', empty:'']
[xldate:0.5816203703703704, number:208.0, text:'engaged', empty:'']
[xldate:0.5816319444444444, number:210.0, text:'engaged', number:23.0]
[xldate:0.5816435185185186, number:211.0, text:'engaged', empty:'']
[xldate:0.5816550925925926, number:212.0, text:'engaged', empty:'']
[xldate:0.5816666666666667, number:213.0, text:'engaged', empty:'']
[xldate:0.5816782407407407, number:214.0, text:'engaged', number:23.0]
[xldate:0.5816898148148147, number:215.0, text:'engaged', empty:'']
[xldate:0.5817013888888889, number:216.0, text:'engaged', empty:'']
[xldate:0.5817129629629629, number:217.0, text:'engaged', empty:'']
Теперь открывается с pandas
:
>>> df = pd.read_excel(fn, parse_dates=True, index_col=0, use_cols=[0] + data_to_retrieve)
>>> df
2 GPS Groundspeed (knots) Auto Speed Active (discrete) Approach Identifier Right (ASCII)
UTC Time (hh:mm:ss)
2018-11-26 13:57:31 207 engaged NaN
2018-11-26 13:57:32 208 engaged NaN
2018-11-26 13:57:33 210 engaged 23
2018-11-26 13:57:34 211 engaged NaN
2018-11-26 13:57:35 212 engaged NaN
2018-11-26 13:57:36 213 engaged NaN
>>> df.index[0]
Timestamp('2018-11-126 13:57:31')
Другие иллюстрациииз того, что происходит:
>>> df = pd.read_excel(fn, parse_date=True, index_col=0, use_cols=[0] + data_to_retrieve)
>>> df1 = pd.read_excel(fn, parse_dates=True, index_col=0, use_cols=[0] + data_to_retrieve)
>>> df.index, df1.index
(Index([13:57:31, 13:57:32, 13:57:33, 13:57:34, 13:57:35, 13:57:36, 13:57:37,
13:57:38, 13:57:39, 13:57:40, 13:57:41, 13:57:42, 13:57:43, 13:57:44,
13:57:45, 13:57:46, 13:57:47, 13:57:48, 13:57:49, 13:57:50, 13:57:51,
13:57:52, 13:57:53, 13:57:54, 13:57:55, 13:57:56, 13:57:57, 13:57:58],
dtype='object', name='UTC Time (hh:mm:ss)'),
DatetimeIndex(['2018-11-26 13:57:31', '2018-11-26 13:57:32',
'2018-11-26 13:57:33', '2018-11-26 13:57:34',
'2018-11-26 13:57:35', '2018-11-26 13:57:36',
'2018-11-26 13:57:37', '2018-11-26 13:57:38',
'2018-11-26 13:57:39', '2018-11-26 13:57:40',
'2018-11-26 13:57:41', '2018-11-26 13:57:42',
'2018-11-26 13:57:43', '2018-11-26 13:57:44',
'2018-11-26 13:57:45', '2018-11-26 13:57:46',
'2018-11-26 13:57:47', '2018-11-26 13:57:48',
'2018-11-26 13:57:49', '2018-11-26 13:57:50',
'2018-11-26 13:57:51', '2018-11-26 13:57:52',
'2018-11-26 13:57:53', '2018-11-26 13:57:54',
'2018-11-26 13:57:55', '2018-11-26 13:57:56',
'2018-11-26 13:57:57', '2018-11-26 13:57:58'],
dtype='datetime64[ns]', name='UTC Time (hh:mm:ss)', freq=None))
Итак, мы видим, что pandas
как-то устанавливает дату;Как я могу проверить, что он по умолчанию на текущий день?