在pandas中删除时区信息

hujrc8aj  于 2023-10-14  发布在  其他
关注(0)|答案(6)|浏览(105)

我一直在努力从一个Pandas的专栏中删除时区信息。我已经检查了以下问题,但它对我不起作用:
Can I export pandas DataFrame to Excel stripping tzinfo?
我使用tz_localize为datetime对象分配时区,因为我需要使用tz_convert转换为另一个时区。这将以“-06:00”的方式添加UTC偏移量。我需要去掉这个偏移量,因为当我试图将该框架导出到Excel时,它会导致错误。
实际输出

  1. 2015-12-01 00:00:00-06:00

期望输出

  1. 2015-12-01 00:00:00

我尝试使用str()方法获取我想要的字符,但似乎tz_localize的结果不是字符串。到目前为止,我的解决方案是将该框架导出到CSV,读取该文件,并使用str()方法获取所需的字符。
有更简单的解决办法吗?

sigwle7e

sigwle7e1#

如果你的系列只包含日期时间,那么你可以这样做:
my_series.dt.tz_localize(None)
这将删除时区信息(不会更改时间)并返回一系列简单的本地时间,例如可以使用to_excel()将其导出到Excel。

vd8tlhqk

vd8tlhqk2#

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

  1. print df
  2. datetime
  3. 0 2015-12-01 00:00:00-06:00
  4. 1 2015-12-01 00:00:00-06:00
  5. 2 2015-12-01 00:00:00-06:00
  6. df['datetime'] = df['datetime'].astype(str).str[:-6]
  7. print df
  8. datetime
  9. 0 2015-12-01 00:00:00
  10. 1 2015-12-01 00:00:00
  11. 2 2015-12-01 00:00:00
lzfw57am

lzfw57am3#

要在具有混合列的DataFrame中从所有日期时间列中删除时区,只需用途:

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

如果你不能保存df到excel文件,就用这个(不删除时区!):

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

ugmeyewa4#

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

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

bkkx9g8r5#

如果你想从所有datetime64列中删除所有时区,你可以使用这个

  1. for col in df.select_dtypes(include=['datetime64[ns, UTC]']).columns:
  2. df[col] = df[col].apply(lambda x: x.tz_localize(None))
krcsximq

krcsximq6#

如果你总是想忽略最后6个字符,你可以简单地切片你的当前字符串:

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

相关问题