python画带状图,关于python:熊猫中的带状时区信息

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

我可以将pandas DataFrame导出到Excel中以剥离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()方法获取所需的字符。

有没有更简单的解决方案?

df[datetime].dt.tz_localize(None)不起作用吗? 用您的列名替换datetime

谢谢。 它不起作用。 日期格式为" 2015-12-01 00:00:00-06:00"。 我使用" to_datetime"将原始日期格式转换为datetime对象,以便应用" tz_localize"转换为另一个时区。 看来tz_localize添加了该偏移量,但我还没有找到如何摆脱它的方法。

如果您的系列仅包含日期时间,则可以执行以下操作:

my_series.dt.tz_localize(None)

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

如果pandas数据框包含日期时间以外的列怎么办? 我收到类似" TypeError:索引不是有效的DatetimeIndex或PeriodIndex"的错误

@DaveX,那么您将执行my_df[time_columns] = my_df[time_columns].dt.tz_localize(None),其中time_columns是具有datetime dtype的列名称的列表

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

print df

datetime

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

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

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

df['datetime'] = df['datetime'].astype(str).str[:-6]

print df

datetime

0  2015-12-01 00:00:00

1  2015-12-01 00:00:00

2  2015-12-01 00:00:00

谢谢! 做到了。 我必须先将其转换为字符串。

您可以在此答案中使用replace(tzinfo=None):stackoverflow.com/questions/10944047/remove-pytz-timezone/

@Beatriz Fronseca谢谢您的建议。

按照Beatriz Fonseca的建议,我最终做了以下工作:

from datetime import datetime

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

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

for col in df.select_dtypes(['datetimetz']).columns:

df[col] = df[col].dt.tz_convert(None)

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

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

'2015-12-01 00:00:00'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值