2016-10-12 3 views
2

미국 일광 절약 시간제로 발생하는 1 시간 시간 이동 문제를 해결하려고합니다. 내가 사용하여 새 날짜 범위를 적용 할 때 시계열의 일부 서머 타임이 1 시간 바뀔 때 잘못된 색인 다시 생성

현재

In [3] eurusd 
    Out[3]: 
         BID-CLOSE 
    TIME       
    1994-03-28 22:00:00 1.15981 
    1994-03-29 22:00:00 1.16681 
    1994-03-30 22:00:00 1.15021 
    1994-03-31 22:00:00 1.14851 
    1994-04-03 21:00:00 1.14081 
    1994-04-04 21:00:00 1.13921 
    1994-04-05 21:00:00 1.13881 
    1994-04-06 21:00:00 1.14351 
    1994-04-07 21:00:00 1.14411 
    1994-04-10 21:00:00 1.14011 
    1994-04-11 21:00:00 1.14391 
    1994-04-12 21:00:00 1.14451 
    1994-04-13 21:00:00 1.14201 
    1994-04-14 21:00:00 1.13911 
    1994-04-17 21:00:00 1.14821 
    1994-04-18 21:00:00 1.15181 
    1994-04-19 21:00:00 1.15621 
    1994-04-20 21:00:00 1.15381 
    1994-04-21 21:00:00 1.16201 
    1994-04-24 21:00:00 1.16251 
    1994-04-25 21:00:00 1.16721 
    1994-04-26 21:00:00 1.17101 
    1994-04-27 21:00:00 1.17721 
    1994-04-28 21:00:00 1.18421 
    1994-05-01 21:00:00 1.18751 
    1994-05-02 21:00:00 1.17331 
    1994-05-03 21:00:00 1.16801 
    1994-05-04 21:00:00 1.17141 
    1994-05-05 21:00:00 1.17691 
    1994-05-08 21:00:00 1.16541 
          ... 
    1994-09-26 21:00:00 1.25501 
    1994-09-27 21:00:00 1.25761 
    1994-09-28 21:00:00 1.25541 
    1994-09-29 21:00:00 1.25421 
    1994-10-02 21:00:00 1.25721 
    1994-10-03 21:00:00 1.26131 
    1994-10-04 21:00:00 1.26121 
    1994-10-05 21:00:00 1.26101 
    1994-10-06 21:00:00 1.25761 
    1994-10-10 21:00:00 1.26161 
    1994-10-11 21:00:00 1.26341 
    1994-10-12 21:00:00 1.27821 
    1994-10-13 21:00:00 1.29411 
    1994-10-16 21:00:00 1.29401 
    1994-10-17 21:00:00 1.29371 
    1994-10-18 21:00:00 1.29531 
    1994-10-19 21:00:00 1.29681 
    1994-10-20 21:00:00 1.29971 
    1994-10-23 21:00:00 1.30411 
    1994-10-24 21:00:00 1.30311 
    1994-10-25 21:00:00 1.30091 
    1994-10-26 21:00:00 1.28921 
    1994-10-27 21:00:00 1.29341 
    1994-10-30 22:00:00 1.29931 
    1994-10-31 22:00:00 1.29281 
    1994-11-01 22:00:00 1.27771 
    1994-11-02 22:00:00 1.27821 
    1994-11-03 22:00:00 1.28321 
    1994-11-06 22:00:00 1.28751 
    1994-11-07 22:00:00 1.27091 

(아래 자르는 것은) : 다음

idx = pd.date_range('1994-03-28 22:00:00', '1994-11-07 22:00:00', freq= 'D') 

In [4] idx 
Out[4]: 
DatetimeIndex(['1994-03-28 22:00:00', '1994-03-29 22:00:00', 
       '1994-03-30 22:00:00', '1994-03-31 22:00:00', 
       '1994-04-01 22:00:00', '1994-04-02 22:00:00', 
       '1994-04-03 22:00:00', '1994-04-04 22:00:00', 
       '1994-04-05 22:00:00', '1994-04-06 22:00:00', 
       ... 
       '1994-10-29 22:00:00', '1994-10-30 22:00:00', 
       '1994-10-31 22:00:00', '1994-11-01 22:00:00', 
       '1994-11-02 22:00:00', '1994-11-03 22:00:00', 
       '1994-11-04 22:00:00', '1994-11-05 22:00:00', 
       '1994-11-06 22:00:00', '1994-11-07 22:00:00'], 
       dtype='datetime64[ns]', length=225, freq='D') 

을 나는 새 날짜 범위를 사용하여 dataframe를 다시 인덱싱 timeseries는 모든 21:00 값을 22:00로 변환하고 BID-CLOSE는 NaN으로 변환합니다. 이유를 이해하지만, 코드를 US Summer Time 스케쥴에 따라 1 시간 단위로 인식하는 방법을 확신 할 수 없습니다. 인덱싱을

출력 :

In[5]: eurusd_copy1 = eurusd.reindex(idx, fill_value=None) 

In[6]: eurusd_copy1 
Out[6]: 
        BID-CLOSE 
1994-03-28 22:00:00 1.15981 
1994-03-29 22:00:00 1.16681 
1994-03-30 22:00:00 1.15021 
1994-03-31 22:00:00 1.14851 
1994-04-01 22:00:00  NaN 
1994-04-02 22:00:00  NaN 
1994-04-03 22:00:00  NaN 
1994-04-04 22:00:00  NaN 
1994-04-05 22:00:00  NaN 
1994-04-06 22:00:00  NaN 
1994-04-07 22:00:00  NaN 
1994-04-08 22:00:00  NaN 
1994-04-09 22:00:00  NaN 
1994-04-10 22:00:00  NaN 
1994-04-11 22:00:00  NaN 
1994-04-12 22:00:00  NaN 
1994-04-13 22:00:00  NaN 
1994-04-14 22:00:00  NaN 
1994-04-15 22:00:00  NaN 
1994-04-16 22:00:00  NaN 
1994-04-17 22:00:00  NaN 
1994-04-18 22:00:00  NaN 
1994-04-19 22:00:00  NaN 
1994-04-20 22:00:00  NaN 
1994-04-21 22:00:00  NaN 
1994-04-22 22:00:00  NaN 
1994-04-23 22:00:00  NaN 
1994-04-24 22:00:00  NaN 
1994-04-25 22:00:00  NaN 
1994-04-26 22:00:00  NaN 
         ... 
1994-10-09 22:00:00  NaN 
1994-10-10 22:00:00  NaN 
1994-10-11 22:00:00  NaN 
1994-10-12 22:00:00  NaN 
1994-10-13 22:00:00  NaN 
1994-10-14 22:00:00  NaN 
1994-10-15 22:00:00  NaN 
1994-10-16 22:00:00  NaN 
1994-10-17 22:00:00  NaN 
1994-10-18 22:00:00  NaN 
1994-10-19 22:00:00  NaN 
1994-10-20 22:00:00  NaN 
1994-10-21 22:00:00  NaN 
1994-10-22 22:00:00  NaN 
1994-10-23 22:00:00  NaN 
1994-10-24 22:00:00  NaN 
1994-10-25 22:00:00  NaN 
1994-10-26 22:00:00  NaN 
1994-10-27 22:00:00  NaN 
1994-10-28 22:00:00  NaN 
1994-10-29 22:00:00  NaN 
1994-10-30 22:00:00 1.29931 
1994-10-31 22:00:00 1.29281 
1994-11-01 22:00:00 1.27771 
1994-11-02 22:00:00 1.27821 
1994-11-03 22:00:00 1.28321 
1994-11-04 22:00:00  NaN 
1994-11-05 22:00:00  NaN 
1994-11-06 22:00:00 1.28751 
1994-11-07 22:00:00 1.27091 

[225 rows x 1 columns] 

원하는 출력하지만 이미 unchnaged 기간을 가지고 BID-CLOSE 값을 유지 NaN이 가득 어떤 날짜 간격을 가질 것이다. 아래 출력은 가상의 것이며 원하는 결과를 설명하기위한 것입니다.

     BID-CLOSE 
28/03/1994 22:00:00 1.15981 
29/03/1994 22:00:00 1.16681 
30/03/1994 22:00:00 1.15021 
31/03/1994 22:00:00 1.14851 
01/04/1994 21:00:00  NaN 
02/04/1994 21:00:00  NaN 
03/04/1994 21:00:00 1.13881 
04/04/1994 21:00:00 1.14351 
05/04/1994 21:00:00 1.14411 
06/04/1994 21:00:00 1.14011 
07/04/1994 21:00:00 1.14391 
08/04/1994 21:00:00  NaN 
09/04/1994 21:00:00  NaN 
10/04/1994 21:00:00 1.14451 
11/04/1994 21:00:00 1.14201 
12/04/1994 21:00:00 1.13911 
13/04/1994 21:00:00 1.14821 
     …  
25/10/1994 21:00:00 1.29371 
26/10/1994 21:00:00  NaN 
27/10/1994 21:00:00 1.29681 
28/10/1994 21:00:00 1.29971 
29/10/1994 21:00:00 1.30411 
30/10/1994 22:00:00 1.30311 
31/10/1994 22:00:00  NaN 
01/11/1994 22:00:00  NaN 
02/11/1994 22:00:00 1.29341 

코드가 미국 표준 시간대를 인식하도록하려면 어떻게해야합니까?

+0

['date_range']에'tz '을 넘기는 경우에는 작동하지 않을 것입니다 (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.html) ? 따라서 시간대가 일치하면 일치해야합니다. – EdChum

답변

2

나는 당신의 날짜 색인이 시간대가 순진하다고 생각합니다.

먼저 시간대를 설정, 나는

eurusd = eurusd.tz_localize('UTC') 

다음 당신은 당신이 할 수 다시 인덱스로 다음

eurusd = eurusd.tz_convert('America/New_York') 

을 갖도록 같은 어떤 시간대 당신을 변환 할 수 있습니다 그들은 UTC 있다고 가정합니다 당신이 원한다면

+0

감사합니다. 나 또한 idz varable에 트릭을 수행 한 것으로 보이는 timezone 함수를 사용했다. – James

관련 문제