2013-12-15 5 views
0

* RE Add missing dates to pandas dataframe, 이전에 요청 명령이 하나가 할 질문으로 언급 무엇 위의 스크립트에서 질문팬더 다시 인덱싱 명령

import pandas as pd 
import numpy as np 

idx = pd.date_range('09-01-2013', '09-30-2013') 

df = pd.DataFrame(data = [2,10,5,1], index = ["09-02-2013","09-03-2013","09-06-2013","09-07-2013"], columns = ["Events"]) 

df.index = pd.DatetimeIndex(df.index); #question (1) 

df = df.reindex(idx, fill_value=np.nan) 
print(df) 

? 이 명령을 스크립트 밖으로두면 df는 다시 색인화되지만 원본 df의 데이터 부분은 유지되지 않습니다. DatetimeIndex 명령의 df 데이터에 대한 참조가 없기 때문에 시작하는 df의 데이터가 손실되는 이유는 무엇입니까?

답변

2

짧은 대답 : df.index = pd.DatetimeIndex(df.index);df의 문자열 인덱스를 DatetimeIndex로 변환합니다.


다른 유형의 인덱스를 구분해야합니다.

df = pd.DataFrame(data = [2,10,5,1], index = ["09-02-2013","09-03-2013","09-06-2013","09-07-2013"], columns = ["Events"]) 

에서는 문자열을 포함하는 인덱스가 있습니다.
df.index = pd.DatetimeIndex(df.index); 

를 사용하는 경우 당신은 날짜 시간
(A DatetimeIndex)과 인덱스에 문자열이 기준 지수를 변환합니다. 따라서이 두 가지 유형의 인덱스 값은 완전히 다릅니다. 이제

, 당신은 idx 또한 날짜 시간인덱스

idx = pd.date_range('09-01-2013', '09-30-2013') 
df = df.reindex(idx) 

와 인덱싱. 원본 df을 문자열 인덱스로 다시 인덱싱하면 일치하는 인덱스 값이 없기 때문에 원본의 열 값은 그대로 유지됩니다. df. 두 번째 df을 다시 색인 할 때 (색인을 datetime 색인으로 변환 한 후) 일치하는 색인 ​​값이 있으므로 해당 색인의 열 값은 그대로 유지됩니다.

도 참조 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.reindex.html

관련 문제