문제 상황
많은 코드를 작성하지도 않았다.
pandas dataframe을 pyspark dataframe으로 바꾸려고
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame(items_df)
이렇게만 작성했는데 오류가 발생하였다.
오류 메세지는 제목에 있듯
C:\Users\___\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyspark\sql\pandas\conversion.py:474: FutureWarning: iteritems is deprecated and will be removed in a future version. Use .items instead.
for column, series in pdf.iteritems():
이렇게 발생하고
IndexError: tuple index out of range
무슨 인덱스 어쩌구저쩌구,,
결론은 파이썬 버전을 맞춰줘야 함!!
찾아간 과정들을 살펴보자
(맨 밑에 사용 버전 정리해두었어요~ )
위에 발생한 오류를 보면 최신 버전에는 iteritems가 없어지고 items가 대신한다고 말해주고 있다.
pandas.DataFrame.iteritems — pandas 1.5.3 documentation (pydata.org)
관련 문서이다.
Pandas 1.5.0 이후 버전에는 iteritems가 없는데 Pyspark는 아마 아직 iteritems를 받고자 하는가?? 하는 의심이 들었음.
그러면 판다스 버전을 iteritems가 있는 버전으로 낮추자는 결론.
Release notes — pandas 1.5.3 documentation (pydata.org)
판다스 버전을 보니 1.4.4가 1.5 이전 중 가장 최신 버전이길래 이 친구로 해보려고 한다.
해결 과정
1. 내가 설치되어있는 판다스 버전 확인하기
import pandas as pd
print(pd.__version__) # 1.5.3
2. 버전 지정해서 재설치하기
pip install pandas==1.4.4
python -m pip install pandas==1.4.4
> 하지만 에러가 뜨네??
ERROR: Failed building wheel for pandas
ERROR: Could not build wheels for pandas, which is required to install pyproject.toml-based projects
원인은 빌드도구 혹은 의존성 문제라고 한다.
만약에 바로 다운그레이드 된다면 패스
문제가 생긴다면 여러 방법이 있겠지만 삭제했다가 다시 다운받아보려고 한다.
삽질1) 삭제했다가 재설치하기
pip uninstall pandas
삭제 성공적으로 됐공,,
찾아보니까 1.4.1 버전 많이 사용하는거 같길래 이 버전으로 설치 해땅.
힝 다시 삭제했다가 설치해도 안되는군,,,,
삽집 2) 빌드도구 설치
python -m pip install --upgrade pip setuptools wheel
삽질3) python 버전 낮추기
지금 내 python 버전은 3.11.1
하지만 위도우가 3.11을 아직 지원하지 않는다는 말이 있어서 (아무렇게나 가장 최신거 다운받았는데 그러면 안될듯 ㅠ) 3.10.6 로 다운그레이드 하려고 한다.
python 다시 설치해서 환경변수 설정하구 안에 패키지 까지 다시 다 다운 완료.
이제 버전 변경해야하는 일은 없기를,,,,
결과는 성공적!!!!!!
휴 살겠다
묵은 체증이 다 날라가는 느낌이다.
앞으로는 버전,, 잘 확인해서 처음 세팅할때 신경써서 맞춰서 하길 바란다^^ (나에게 하는말..)
사용 버전
Python | 3.10.6 |
Pandas | 1.4.1 |
Pyspark | 3.3.2 |
'프로그래밍 > Python' 카테고리의 다른 글
[Pandas] Dataframe row apply 활용법 (0) | 2024.01.15 |
---|---|
[Pandas] Dataframe row 순회하는 법 (0) | 2023.09.13 |
[Python] 도로명 주소 위도,경도로 전환하기 (지오코딩) (0) | 2022.11.02 |
[Pandas] 빈 Dataframe생성 및 데이터 행 삽입 (0) | 2022.10.18 |
[Python] 날짜 형식 다루기 (datetime,timedelta) (0) | 2022.10.04 |