我一直在努力从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()方法获取我想要的字符。
有更简单的解决方案吗?
答案 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'