2016-10-20 2 views
1

나는 이해할 수없는 이상한 버그로 고생하고 있습니다. 어쩌면 간과 할 수없는 아주 기본적인 것일 수도 있습니다. 코드는 다음입니다 :팬더 시리즈를 DataFrame에 열로 추가하면 야생 NaN이 표시됩니다.

df = pd.DataFrame(
    some_numpy_array, 
    columns=[i for i in range(N)]) 

df.shape 
(57058, 20) 

some_pd_series.shape 
(57058,) 

df["Text"] = some_pd_series 

sum(some_pd_series.isnull()) 
0 

sum(df["Text"].isnull()) 
21137 

df["Text"] 오른쪽 some_pd_series과 정확하게 일치해야합니까? 그렇다면이 모든 것들이 갑자기 어디에서 왔습니까?

+3

이 같은 인덱스 라벨이 없을 수 있습니다, 무슨 일이'렌 않습니다 (df.index.intersection (some_pd_series.index))'show? 인덱스 라벨이 57058과 같지 않다면 인덱스 레이블이 같지 않습니다. 그러면 색인 라벨이'somefpdies '가 아닌'df'에 존재하는'NaN'이됩니다. – EdChum

+0

'some_pd_series.index = df.index'이면 열 할당이 작동합니다. – EdChum

+0

@EdChum 네, 맞습니다. 'df'에 추가하기 전에'some_pd_series.reset_index (drop = True, inplace = True)'를하는 것 또한 트릭을했습니다. 감사합니다! – machaerus

답변

1

@EdChum 주석 덕분에 색인이 일치하지 않아서 문제가 발견되었습니다. 이전에 중복 된 항목이 some_pd_series에서 삭제되어 해당 색인에 "구멍"이 생겨서 이런 일이 발생했습니다. 이 문제를 해결

가능한 방법은 다음과 같습니다 : 시리즈 형태가 동일 할 수 동안

  1. some_pd_series.index = df.index
  2. some_pd_series.reset_index(drop=True, inplace=True)
관련 문제