在熊猫中删除时区信息

时间:2015-12-29 07:02:27

标签: python pandas

我一直在努力从pandas数据框中的列中删除时区信息。我检查了以下问题,但它对我不起作用:

Can I export pandas DataFrame to Excel stripping tzinfo?

我使用tz_localize为datetime对象分配时区,因为我需要使用tz_convert转换为另一个时区。这会以" -06:00"的方式添加UTC偏移量。我需要摆脱这种偏移,因为当我尝试将数据框导出到Excel时会导致错误。

实际输出

2015-12-01 00:00:00-06:00

期望的输出

2015-12-01 00:00:00

我试图使用str()方法获取我想要的字符,但似乎tz_localize的结果不是字符串。到目前为止,我的解决方案是将数据帧导出到csv,读取文件,并使用str()方法获取我想要的字符。

有更简单的解决方案吗?

5 个答案:

答案 0 :(得分:17)

如果你的系列只包含日期时间,那么你可以这样做:

my_series.dt.tz_localize(None)

这将删除时区信息(它不会改变时间)并返回一系列天真的本地时间,例如可以使用to_excel()导出到excel。

答案 1 :(得分:9)

也许帮助剥去最后6个字符:

holla, this is your message from queue

答案 2 :(得分:3)

根据Beatriz Fonseca的建议,我最终做了以下事情:

from datetime import datetime
df['dates'].apply(lambda x:datetime.replace(x,tzinfo=None))

答案 3 :(得分:1)

要从所有列中删除时区,只需使用:

for col in df.select_dtypes(['datetimetz']).columns:
    df[col] = df[col].dt.tz_convert(None)

答案 4 :(得分:0)

如果始终是您要忽略的最后6个字符,您可以简单地切片当前字符串:

>>> '2015-12-01 00:00:00-06:00'[0:-6]
'2015-12-01 00:00:00'