Дата по умолчанию для панд, если она не указана в столбце времени индекса - PullRequest
0 голосов
/ 26 ноября 2018

Я загружаю 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 как-то устанавливает дату;Как я могу проверить, что он по умолчанию на текущий день?

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