Создайте массив временных меток в python

Я пытался создать вектор времени в python 3.x, чтобы построить график зависимости скорости ветра от времени.
Скорость ветра замерялась каждые 5 минут, начиная с 00:00 и заканчивая 23:55 (т. е. 288 замеров в день).

Я использую pandas для чтения данных. Я храню переменные скорости в векторе numpy. Я сохранил переменные, используя numpy.array(met1.loc[ini:fin, 'm/s Wind']), и они идеально подходят для скорости ветра. Когда я попытался сделать это для datetime переменных, as numpy.array(met1.loc[ini:fin, 'Measurement Time']) показал мне следующую ошибку:

'the label [Measurement Time] is not in the [columns]' (подробности см. в коде)

met1.head() выглядит так:

 .                  m/s Wind  m/s Gusts  ° Direction        RH  °C Temp  \
Measurement Time                                                           
2018-11-13 11:20:00      6.77        9.5          268  0.068590     12.6   
2018-11-13 11:25:00      6.90       10.4          284  0.067255     12.9   
2018-11-13 11:30:00      6.59       11.3          279  0.066381     13.1   
2018-11-13 11:35:00      7.10       10.1          279  0.073019     13.1   
2018-11-13 11:40:00      6.01        9.8          273  0.073498     13.0

Код выглядит так:

import numpy as np
import pandas as pd

met1 = pd.read_excel('database.xls', sheet_name=0, skiprows=2, index_col = 'Measurement Time', parse_dates=[0]) #reading data base

def variables (ini, fin):
# Variables for MET-1
    wind1 = np.array(met1.loc[ini:fin, 'm/s Wind'])
    dir1 = np.array(met1.loc[ini:fin, '° Direction'])
    rh1 = np.array(met1.loc[ini:fin, 'RH']) # 0.123
    temp1 = np.array(met1.loc[ini:fin, '°C Temp'])
    p1 = np.array(met1.loc[ini:fin, 'kPa Pressure'])
    tiempo = np.array(met1.loc[ini:fin, 'Measurement Time'])
    print(wind1)
    print(tiempo)

variables('2018-11-15','2018-11-15')
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _validate_key(self, key, axis)
   1789                 if not ax.contains(key):
-> 1790                     error()
   1791             except TypeError as e:

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in error()
   1784                                .format(key=key,
-> 1785                                        axis=self.obj._get_axis_name(axis)))
   1786 

KeyError: 'the label [Measurement Time] is not in the [columns]'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-182-130dc8c7095b> in <module>
      1 # variables('2018-11-13','2018-11-13') # Mount day
      2 # variables('2018-11-14','2018-11-14') # Mount day
----> 3 variables('2018-11-15','2018-11-15')
      4 variables('2018-11-16','2018-11-16')
      5 variables('2018-11-17','2018-11-17')

<ipython-input-181-2a7e1e919435> in variables(ini, fin)
     17     temp1 = np.array(met1.loc[ini:fin, '°C Temp'])
     18     p1 = np.array(met1.loc[ini:fin, 'kPa Pressure'])
---> 19     tiempo = np.array(met1.loc[ini:fin, 'Measurement Time'])
     20     print(tiempo)
     21 

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in __getitem__(self, key)
   1470             except (KeyError, IndexError):
   1471                 pass
-> 1472             return self._getitem_tuple(key)
   1473         else:
   1474             # we by definition only have the 0th axis

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_tuple(self, tup)
    868     def _getitem_tuple(self, tup):
    869         try:
--> 870             return self._getitem_lowerdim(tup)
    871         except IndexingError:
    872             pass

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_lowerdim(self, tup)
    996         for i, key in enumerate(tup):
    997             if is_label_like(key) or isinstance(key, tuple):
--> 998                 section = self._getitem_axis(key, axis=i)
    999 
   1000                 # we have yielded a scalar ?

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
   1909 
   1910         # fall thru to straight lookup
-> 1911         self._validate_key(key, axis)
   1912         return self._get_label(key, axis=axis)
   1913 

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _validate_key(self, key, axis)
   1796                 raise
   1797             except:
-> 1798                 error()
   1799 
   1800     def _is_scalar_access(self, key):

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in error()
   1783                 raise KeyError(u"the label [{key}] is not in the [{axis}]"
   1784                                .format(key=key,
-> 1785                                        axis=self.obj._get_axis_name(axis)))
   1786 
   1787             try:

KeyError: 'the label [Measurement Time] is not in the [columns]'

Временной вектор, который мне нужен, должен выглядеть так!!!:['00:00' '00:05' ..... '23:50' '23:55'] на дату '2018-11-15'

Пожалуйста, предоставьте образец данных для вашего вопроса.

Regressor 25.03.2019 19:25

Спасибо за Ваш ответ. Я добавляю голову базы данных. Я попытался сохранить переменную как tiempo = np.array(met1.loc[ini:fin, 'Measurement Time']), но когда я print(tiempo) показал следующую ошибку: 'the label [Measurement Time] is not in the [columns]'

Matias SIGNORIO DUQUE 25.03.2019 20:53

А что именно не работает?

juanpa.arrivillaga 25.03.2019 20:53

Если вы храните время измерения в строках Python, вы можете просто обрезать их срезами: datetime = datetime[:-3]

vurmux 25.03.2019 21:01

@juanpa.arrivillaga Когда я print(wind1) верну numpy вектор с величиной скорости на 15 ноября 2018 года. Возможно, index_col при импорте базы данных возникает эта проблема, но если я изменю index_col, весь мой код не будет работать. Поэтому я не знаю, как создать вектор времени, чтобы построить график зависимости скорости ветра (wind1) от времени в формате HH:MM.

Matias SIGNORIO DUQUE 25.03.2019 21:06
Отредактируйте свой вопрос, не добавляйте его в комментарии. Покажите нам, точно, результат, который вы видите, и приведите пример требуемого результата.
juanpa.arrivillaga 25.03.2019 21:07

отлично! Грасиас @juanpa.arrivillaga

Matias SIGNORIO DUQUE 25.03.2019 21:40

Вы сделали столбец «Время измерения» своим индексом, вы больше не можете использовать его как столбец. Попробуйте просто met1.loc[ini:fin].index.values

juanpa.arrivillaga 25.03.2019 21:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
8
1 871
0

Другие вопросы по теме