gpt4 book ai didi

python - Pandas:将时间戳转换为 EST 时出现属性错误

转载 作者:行者123 更新时间:2023-12-01 03:08:58 24 4
gpt4 key购买 nike

考虑这个简单的例子

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”对象没有属性“tz_localize”

使用x[x.notnull()]也不起作用。我能做什么?

最佳答案

无需使用reset_index ,而是直接在 DatetimeIndex 上操作其中有tz_localizetz_convert内置:

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

结果输出:

                    groups  value
2016-08-31 18:08:12 A 1
2016-08-31 18:08:12 NaN 1
NaT A 3

正如 @DSM 所指出的,您可以使用 .dt访问器,如果您想在列上执行此操作,但您需要使用 .dt 的 3 个实例,每个时区操作之前一个:

test2.reset_index(inplace=True)
test2['index'] = test2['index'].dt.tz_localize('UTC').dt.tz_convert('US/Eastern').dt.tz_localize(None)

index groups value
0 2016-08-31 18:08:12 A 1
1 2016-08-31 18:08:12 NaN 1
2 NaT A 3

关于python - Pandas:将时间戳转换为 EST 时出现属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43080764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com