2017-10-16 10 views
0

나는 최대최대 기온을 1 년에 걸쳐 집계하려고합니다. 내 데이터 프레임의 열은 날짜, 이름, Tmax, Tmin입니다.명명 된 인덱스에 액세스하려고 시도 할 때 KeyError가 throw됩니다.

df['Year'], df['Month-Date'] = zip(*df['Date'].apply(lambda x: (x[:4], x[5:]))) 

그것은 키 오류를

사용 df.dtypes의 수익률을 반환합니다 : 내가 사용하려고하지만

NAME  object 
TMAX float64 
TMIN float64 
dtype: object 

내 dataframe 명확하게 날짜 열을 보여줍니다 그래서 있지만, 내 열의 목록에 없습니다. 이전에 내 색인을 Date로 설정하면 오류가 발생하지 않았습니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

답변

0

Date을 색인으로 설정 한 것으로 보이므로 당연히 열의 하나로서 표시되지 않습니다. 이제 df.index을 사용하여 참조하십시오.

또한 datetime 데이터에 문자열 연산을 사용하지 않는 것이 좋습니다. 접근자를 사용하고 원하는 날짜 구성 요소의 압축을 풉니 다. 이미 datetime 형식이 아닌 경우 pd.to_datetime을 사용하여 변환하십시오.

# don't run this line if the index is a DateTimeIndex already 
y = pd.to_datetime(df.index, errors='coerce')        
df['Year'], df['Month-Date'] = y.year, y.month