Pandas:将时间戳转换为EST时的attribute_error

时间:2017-03-28 22:03:09

标签: python pandas

考虑这个简单的例子

idx2=[pd.to_datetime('2016-08-31 22:08:12') , 
     pd.to_datetime('2016-08-31 22:08:12'),
     pd.to_datetime(np.NaN)]

test2=pd.DataFrame({'value':[1,1,3], 'groups' : ['A',np.NaN,'A']},index=idx2)
test2.reset_index(inplace = True)


test2
Out[29]: 
                index groups  value
0 2016-08-31 22:08:12      A      1
1 2016-08-31 22:08:12    NaN      1
2                 NaT      A      3

我想将列index转换为EST,但是这个

test2['index'].map(lambda x: x.tz_localize('UTC').tz_convert('US/Eastern').tz_localize(None))

给了我

AttributeError: 'NaTType' object has no attribute 'tz_localize'

使用x[x.notnull()]也不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:2)

无需使用reset_index,而只需直接在内置DatetimeIndextz_localize的{​​{1}}上投放:

tz_convert

结果输出:

test2.index = test2.index.tz_localize('UTC').tz_convert('US/Eastern').tz_localize(None)

如@DSM所述,如果您想在列上执行此操作,则可以使用 groups value 2016-08-31 18:08:12 A 1 2016-08-31 18:08:12 NaN 1 NaT A 3 访问者,但是您需要使用3个.dt个实例,每个实例前一个时区操作:

.dt