python csv에서 read한 Dataframe에서 원하는 부분만 추출할 수 있을까요?
조회수 579회
안녕하세요. 파이썬 입문자입니다.
DataFrame으로 csv, Excel 핸들링 중인데요. 이것 저것 시도 하다가 막힌 부분이 있어서 도움 요청드립니다. 아래 그림처럼 csv 파일이 있을 때 제가 원하는 부분은 a2아래 있으면서 아래 NaN 값보다는 위에 있는 값들을 뽑고 싶은데요.(예시의 csv 파일에서는 p,q 입니다.) 여기서 문제는 저희가 해당 csv 파일에 대해 아는 정보는 오직 a1, a2 입니다. a1의 무조건 (1,A) 에 위치하고요. a2는 csv 파일 상 (random, A) 한 위치에 있습니다. 그리고 p와q도 random 알파벳이며 p, q가 아니라 b,c,d,e 가 각각 다른 행으로 존재할수도 있습니다. 즉, 제가 원하는 데이터들은 a2 밑에 있으면서 a2 밑에서 최초의 NaN값보다는 위에 있는 모든 데이터들을 따로 뽑고 싶습니다. 이럴 경우 어떻게 하면 좋을까요. 도움 부탁 드립니다ㅠㅠ
1 답변
-
df = pd.DataFrame( [ ['a1', 2, 3], ['b', 5, 6], # ------------- ['a2'], ['c', 5, 6], ['d', 5, 6], ['a2', 5, 6], ['e', 5, 6], # ------------- ['NaN', 5, 6], ['f', 5, 6], ['g', 5, 6], # ------------- ['a2'], ['e', 5, 6], # ------------- ['NaN', 5, 6], ['h', 8, 9], ['a3', 5, 6], ], columns=['A', 'B', 'C']) a2_index_list = df.index[df['A'] == 'a2'].tolist() for i in a2_index_list: print('-' * 20) tempDf = df[i:] nextNan_indexList = tempDf.index[tempDf['A'] == 'NaN'].tolist() if len(nextNan_indexList) > 0: print(df[i+1:nextNan_indexList[0]])
댓글 입력