考虑这个简单的例子
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()]
也不起作用。我该怎么办?
答案 0 :(得分:2)
无需使用reset_index
,而只需直接在内置DatetimeIndex
和tz_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