이 함수 tz_localize를 사용하여 Timestamp 또는 DateTimeIndex 시간대를 인식하도록 만들 수 있지만 그 반대의 경우 어떻게 할 수 있습니까? 시간대를 유지하면서 시간대 인식 Timestamp를 순진한 것으로 변환하려면 어떻게해야합니까?
예 :
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
None으로 설정하여 시간대를 제거 할 수 있지만 결과는 UTC로 변환됩니다 (12 시가 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
DateTimeIndex를 시간대 순진한 시간대로 변환 할 수있는 또 다른 방법이 있지만 설정된 시간대를 유지하면서?
내가 이것을 묻는 이유에 대한 몇 가지 컨텍스트 : 시간대 순진한 타임 시리즈로 작업하고 싶습니다 (시간대에 대한 추가 번거 로움을 피하기 위해 작업중 인 경우에는 필요하지 않습니다).
하지만 어떤 이유에서인지 현지 시간대 (Europe / Brussels)에서 시간대 인식 시계열을 처리해야합니다. 내 다른 모든 데이터는 표준 시간대 순진하지만 (내 현지 시간대로 표시됨) 추가 작업을 위해이 timeseries를 순진한 것으로 변환하고 싶지만 내 현지 시간대로 표시되어야합니다 (시간대 정보를 제거하고, 사용자가 볼 수있는 시간을 UTC 로 변환하지 않고 ).
나는 시간이 실제로 내부적으로 UTC로 저장되고 당신이 그것을 표현할 때 다른 시간 대로만 변환된다는 것을 알고있다. 그래서 내가 그것을 "해제"하고 싶을 때 어떤 종류의 변환이 있어야한다. 예를 들어, python datetime 모듈을 사용하면 다음과 같이 시간대를 "제거"할 수 있습니다.
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>
따라서이를 기반으로 다음을 수행 할 수 있지만 더 큰 시계열로 작업 할 때는 매우 효율적이지 않을 것이라고 생각합니다.
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