2017-09-28 11 views
0
def time_constant_values(time_value, df, band_list): 
     try: 
      time_value in df.index 
     except KeyError: 
      print('The time value does not exist!') 
     else: 
      constants = [] 
      for band in band_list: 
       constants.append(df.loc[time_value][band]) 
      t0_dict = dict(zip(band_list, constants)) 
      return t0_dict 

팬더 데이터 프레임에는 hh : mm : ss 형식의 색인에 시간 값이 들어 있습니다. 부분을 ​​제외하고 시도 할 때 내가 뭘 잘못 했습니까?팬더 데이터 프레임의 값에 대한 색인 검색

특정 열에 대해 특정 시간 행에 액세스하려고 시도하고 열 레이블을 키로 사용하고 데이터 값을 값으로 사용하여 사전을 구성하려고합니다.

고맙습니다!

+0

나는 당신이 당신의 try 블록에서 수행하려고 먼저 무엇을, 여기에서 많은 것들을보고, 그리고 다른 문이 경우 않고있다. – bhansa

+2

@bhansa 그 밖의 부분은 괜찮습니다 (유효한 파이썬 구문), 다른 문제가 있습니다 ... –

+0

유용하다고 생각되면 답변을 수락하고 하나만 대답하십시오. 감사. –

답변

2

키가없는 것은 KeyError을 던지지 않습니다. 단순히 False을 반환합니다. else은 항상 실행되므로 존재하지 않는 키에 대해 색인을 생성 할 때 문제가 발생합니다. if 사용해보십시오 :

def time_constant_values(df, time_value, band_list): 
    if time_value in df.index: 
     return df.loc[time_value, band_list].to_dict() 
+0

코드를 사용하여 함수를 호출하면 인덱스의 값인 것을 알았지 만 "KeyError : '10 : 28 : 00 '"이 표시됩니다. 내 인덱스 값이 timedelta 개체라는 점이 차이점이 있습니까? @COLDSPEED –

+1

@Brain_overflowed하지 않아야합니다. 귀하의 코드가 내 답변에 묘사 된 것과 정확히 일치하길 바랍니다. 그렇다면 'time_value'를 timedelta로 변환 해보십시오. –