Você pode usar a função tz_localizepara tornar um timestamp ou DateTimeIndex ciente do fuso horário, mas como você pode fazer o oposto: como você pode converter um timestamp que reconhece o fuso horário em um ingênuo, preservando seu fuso horário?
Um exemplo:
In [82]: t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")
In [83]: t
Out[83]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
Eu poderia remover o fuso horário definindo-o como Nenhum, mas o resultado é convertido para UTC (12 horas se tornaram 10):
In [86]: t.tz = None
In [87]: t
Out[87]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 10:00:00, ..., 2013-05-18 10:00:09]
Length: 10, Freq: S, Timezone: None
Existe outra maneira de converter um DateTimeIndex em fuso horário ingênuo, mas preservando o fuso horário em que foi definido?
Algum contexto sobre o motivo pelo qual estou perguntando isso: quero trabalhar com séries de tempo ingênuas de fuso horário (para evitar o incômodo extra com fusos horários, e não preciso deles para o caso em que estou trabalhando).
Mas, por alguma razão, tenho que lidar com uma série de tempo ciente de fuso horário no meu fuso horário local (Europa / Bruxelas). Como todos os meus outros dados são ingênuos de fuso horário (mas representados em meu fuso horário local), quero converter esta série de tempo em ingênuo para trabalhar mais com ele, mas também deve ser representado em meu fuso horário local (então, basta remover as informações de fuso horário, sem converter a hora visível ao usuário em UTC).
Eu sei que a hora é armazenada internamente como UTC e só é convertida para outro fuso horário quando você a representa, então deve haver algum tipo de conversão quando eu quiser "deslocalizá-la". Por exemplo, com o módulo Python datetime, você pode "remover" o fuso horário assim:
In [119]: d = pd.Timestamp("2013-05-18 12:00:00", tz="Europe/Brussels")
In [120]: d
Out[120]: <Timestamp: 2013-05-18 12:00:00+0200 CEST, tz=Europe/Brussels>
In [121]: d.replace(tzinfo=None)
Out[121]: <Timestamp: 2013-05-18 12:00:00>
Portanto, com base nisso, eu poderia fazer o seguinte, mas suponho que não seja muito eficiente ao trabalhar com uma série do tempo maior:
In [124]: t
Out[124]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
In [125]: pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
Out[125]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: None, Timezone: None