2014-07-14 4 views
0

내가 INFILE이pandas DataFrame 버그 또는 기능의 항목 유형?

i1,i2,f1,f2 
3,1,0.1,2.0 
2,1,0.3,0.5 

즉 두 개의 정수의 열과 수레 같은 뭔가를 보이는 팬더 DataFrame

df = read_csv("infile.csv") 

에게있는 경우.

나는이 DataFrame를 조회하는 경우 :

print type(df["i1"].ix[0]) 

유형 (내가 너무 일 기대하는 것처럼!) np.int64

을 내가 사용하는 경우 반면입니다 :

print type(df.ix[0]["i1"]) 

유형은 np.float64입니다.

이 올바른 동작입니까? 아니면 버그입니까?

df.ix[0] 

다음에서 선택 [ "I1"] 일련의 오브젝트를 작성

난 때문이라고 추측? 그러나 여전히 이것은 성가신 일입니다.

답변

3

처음으로 df.ix[0]["i1"]에서 첫 번째 행에 대한 계열을 만들면 (따라서 모든 항목이 하나의 dtype을 얻기 위해 부동 상태로 만들어 졌으므로) 이라는 레이블로 항목을 가져 가기 때문에 이것은 실제로 예상되는 동작입니다

해결책은 간단합니다 :이 연쇄 색인을 사용하지만, 하나의 색인 호출 (행과 열을위한) 모두 찾아 업을 결합하지 않습니다

이를 피하기 위해 다른 좋은 이유가 있습니다
df.ix[0, "i1"] 

체인 된 색인 생성 (보기/복사 문제 발생) : http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning-a-view-versus-a-copy

관련 문제