Python 熊猫的时区信息
我一直在努力从熊猫数据框中的列中删除时区信息。我已经检查了以下问题,但它对我不起作用: 我使用tz_localize将时区分配给datetime对象,因为我需要使用tz_convert转换到另一个时区。这将以“-06:00”的方式添加UTC偏移量。我需要去掉这个偏移量,因为当我试图将数据框导出到Excel时,它会导致一个错误 实际产量Python 熊猫的时区信息,python,pandas,Python,Pandas,我一直在努力从熊猫数据框中的列中删除时区信息。我已经检查了以下问题,但它对我不起作用: 我使用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_loc
2015-12-01 00:00:00-06:00
期望输出
2015-12-01 00:00:00
我尝试使用str()方法获取所需的字符,但tz_localize的结果似乎不是字符串。到目前为止,我的解决方案是将数据帧导出到csv,读取文件,并使用str()方法获取所需的字符
有更简单的解决方案吗?如果总是要忽略最后6个字符,您可以简单地对当前字符串进行切片:
>>> '2015-12-01 00:00:00-06:00'[0:-6]
'2015-12-01 00:00:00'
可能有助于去除最后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
如果序列仅包含日期时间,则可以执行以下操作:
my_series.dt.tz_本地化(无)
这将删除时区信息(不会更改时间),并返回一系列简单的本地时间,例如,可以使用to_excel()将其导出到excel。根据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)
df['datetime'].dt.tz_本地化(无)?将
datetime
替换为您的列名。它不起作用。日期格式为“2015-12-01 00:00:00-06:00”。我使用“to_datetime”将原始日期格式转换为datetime对象,以便应用“tz_localize”转换为另一个时区。似乎tz_localize添加了偏移量,我还没有找到如何消除它。密切相关(如果不是重复)谢谢!这就成功了。我必须先将其转换为字符串。您可以使用replace(tzinfo=None)
如下面的回答:@Beatriz Fronseca感谢您的建议。我想这很管用,但根据我的经验,最好先转换为datetime类,然后使用pd.Series.dt.tz_localize
将时区设置为无,正如@Diego Mora Cespedes在这篇帖子的回答中所暗示的那样。最好不要依赖日期格式,这样可能会快得多。@quantif-绝对同意;)如果pandas数据框包含的列不是datetimes,该怎么办?我会遇到类似“TypeError:index不是有效的DatetimeIndex或PeriodIndex”@DaveX的错误,然后您会执行my_df[time_columns]=my_df[time_columns].dt.tz_localize(None)
其中time_columns
是具有datetime数据类型错误答案的列名列表:tz_convert(None)
将在删除时区指示器之前转换为UTC,因此pd.Timestamp('2015-12-01 00:00:00-06:00')。tz_convert(无)
将产生Timestamp('2015-12-01 06:00:00')
。