1. DataFrame은 필터링을 하고 다른 곳에 담아도 원본 index를 보존한다.
df_edit = df[df['col0'].str.contains(item)]
이런 식으로 필터를 걸어 할당했다 하더라도, 원래 df에 있던 index를 가져온다.
따라서 len(df_edit) > 0 이라도 df_edit['col0'][0]은 못 불러올 수 있다.
idx col0
13 "test"
print 해보면 이런 식으로 기존 index가 남아있음을 알 수 있다.
df 자체에서 .head()나 .tail() 로 개수를 가져올 수는 있겠지만 첫번째 줄에 있는 col0의 값을 가져오려면
index를 reset해야 한다. (혹시나 다른 방법이 있다면 댓글 부탁드린다.)
df_edit = df[df['col0'].str.contains(item)].reset_index()
그러면 하기와 같이 바뀌게 된다.
idx col0
0 "test"
2. Dataframe은 index열을 필요로 한다.
dictionary를 dataframe으로 convert하는 경우는 자연스럽게 생긴다.
따라서 엑셀을 dataframe 형태로 읽는데 pk값에 해당하는 int열이 없다면, index=false를 항상 줘야 한다.
df = wb.sheets(1).used_range.options(pd.DataFrame, index=False).value
안 그러면 다른 열을 index열로 바꿔버려 정합성이 맞지 않는 경우가 생긴다.