Python의 pandas 라이브러리 중, read_excel 을 써서 파일을 불렀는데, 내부의 데이터인 셀 값이 list 형식이면 이것이 각 문자로 나뉘어 str로 저장된다.
예를들어 엑셀문서의 특정 열(왼쪽 예제)를 read_excel을 써서 부른다.
pd_xls_ex = pd.read_excel(file_xls_ex)
selected_row_ex = pd_xls_ex['실험용']
원하는 결과는 대략 다음와 같다.
<class 'pandas.core.series.Series>
0 ['a','c','e']
1 [1,3,5]
2 [ (1, 2), (3,4) ]
그러나 실제로 돌려본 결과는, 이 아래처럼 나온다.
'[','a',',','c',',','e',']'
'[','1',',','3',',','5',']'
'[',' ','(','1',',',' ','2',')',',',' ','(','3',',','4',')',' ',']'
각 글자가 str으로 저장된 리스트가 반환된다.
리스트로 써먹기 위해서는 str을 재조립하는 코드를 짤 수도 있으나, 번거로우며 초보자가 쓰기엔 불편/불가능하다.
이 때, ast 라이브러리의 lteral_eval 클래스를 사용하면 편리하다.
아래와 같이 예문에 적용한다. 한글로 된 부분은 고쳐쓴다.
file_xls = 엑셀파일명_주소
pd_xls = pd.read_excel(file_xls)
row_as_list = pd_xls['실험용'].apply(ast.literal_eval)
이러면 특정 열의 각 행이 정확히 리스트로 나온다. 이제 이 열 데이터를 편리하게 작업할 수 있다.
나는 보통 리스트 안에 집어넣어 사용하므로, 아래의 코드 한줄을 더 쓴다.
lists_in_list = list(row_as_list)
예제의 결과는
lists_in_list =
[
['a','c','e'],
[1,3,5],
[ (1, 2), (3,4) ]
]
속성을 확인해보면 아래와 같다.
type(list_with_list) >=> list
type(list_with_list[0]) >=> list
type(list_with_list[2][0]) >=> tuple
참고했던 자료들은 2개다.
https://stackoverflow.com/questions/56811774/importing-an-excel-column-of-lists-with-pandas
'파이썬(Python) > 간단한 연습' 카테고리의 다른 글
판다스 데이터프레임에서 빈 셀은 NaN으로 표기된다. (0) | 2022.11.02 |
---|---|
다중 for loop 의 변수명을 같게 쓰면 안되는 이유: 중간에 바뀐다. (0) | 2022.11.02 |
time stamp method in Python DeepLearning (0) | 2022.09.27 |
for loop 은 최대한 적게 써야 빠르다. (0) | 2022.09.27 |
Kaggle(케글) dataset에 한글제목으로 파일 올리면 이름 깨지는 문제: 해결책 zip 만들어서 올리기 (0) | 2022.09.16 |