Использование iloc для доступа к одному столбцу временных меток с учетом часового пояса в кадре данных каким-то неясным образом прерывается, возвращая значение, а не строку, содержащую его.
Взятие отдельного элемента данных, содержащего одну временную метку. Если нет часового пояса, iloc работает как положено ...
import dateutil.parser as parser
import pandas as pd
a = pd.DataFrame({'A':[parser.parse('2018-05-01T12:00:00')]})
a.iloc[0]['A']
Если есть часовой пояс, то каким-то образом iloc [0] возвращает фактическую метку времени, а не строку, в которой она содержится, в результате чего ['A'] пытается подписать саму метку времени ...
import dateutil.parser as parser
import pandas as pd
a = pd.DataFrame({'A':[parser.parse('2018-05-01T12:00:00+00:00')]})
a.iloc[0]['A']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-ef1b8153d3ca> in <module>()
1 a = pd.DataFrame({'A':[parser.parse('2018-05-01T12:00:00+00:00')]})
----> 2 a.iloc[0]['A']
TypeError: 'Timestamp' object is not subscriptable
Это странность, ограниченная рамками данных, содержащими только один столбец, добавление еще одного столбца, содержащего что-либо, восстанавливает нормальное поведение iloc.
В этом случае изменение порядка адресации строк / столбцов приводит к правильному поведению ...
a['A'].iloc[0]
Очень соблазн назвать это ошибкой.
Windows 7 64-разрядная версия Enterprise
Python 3.6.3 | Anaconda, Inc. | (по умолчанию 15 октября 2017 г., 03:27:45) [MSC v.1900 64 бит (AMD64)] на win32
Панды версия 0.22
Numpy 1.14.0
Дата выпуска 2.6.1
То же поведение в Linux (Redhat)
С пандами версии 0.20.3
Numpy 1.13.1
Дата выпуска 2.6.1