Pandas索引符合时区感知时间戳

时间:2018-05-04 10:58:32

标签: python pandas

使用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位企业版 Python 3.6.3 | Anaconda,Inc。| (默认情况下,2017年10月15日,03:27:45)[MSC v.1900 64位(AMD64)]在win32上 熊猫版0.22 Numpy 1.14.0 Dateutil 2.6.1

linux下的相同行为(redhat) 随着熊猫版本0.20.3 Numpy 1.13.1 Dateutil 2.6.1

0 个答案:

没有答案