pandas DataFrame SQLite3 변환에 관하여
조회수 1071회
안녕하세요. 여럿 구글링 해보고 시도해보고 있는데, 이 부분에 막혀서 질문드립니다.
아래와 같이 리스트를 2개 생성하고, pd.cut
과 value_counts()
를 이용해서 범주를 생성하여 해당 범위 안에 들어간 값의 수량을 파악하는 DataFrame을 만들었습니다. 그리고 이 DataFrame을 db파일로 저장하기 위해 변환을 하는 과정에서 계속 오류가 발생하네요. 일반적으로 DataFrame은 db파일로 저장이 가능한데, 범주형은 db파일로 변환이 안 되는지 의문입니다.
변환이 안 되는 이유와 방법 좀 알려주세요:(
오류 내용 :
Traceback (most recent call last):
File "C:/Users/lajet/Desktop/New Version/Exam_2.py", line 74, in <module>
df.to_sql('test2', conn, if_exists="append")
File "C:\Users\lajet\Anaconda3\envs\BP3\lib\site-packages\pandas\core\generic.py", line 2531, in to_sql
dtype=dtype, method=method)
File "C:\Users\lajet\Anaconda3\envs\BP3\lib\site-packages\pandas\io\sql.py", line 460, in to_sql
chunksize=chunksize, dtype=dtype, method=method)
File "C:\Users\lajet\Anaconda3\envs\BP3\lib\site-packages\pandas\io\sql.py", line 1547, in to_sql
table.insert(chunksize, method)
File "C:\Users\lajet\Anaconda3\envs\BP3\lib\site-packages\pandas\io\sql.py", line 686, in insert
exec_insert(conn, keys, chunk_iter)
File "C:\Users\lajet\Anaconda3\envs\BP3\lib\site-packages\pandas\io\sql.py", line 1319, in _execute_insert
conn.executemany(self.insert_statement(), data_list)
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.
import sqlite3 as sq
import pandas as pd
conn = sq.connect('test.db')
cur = conn.cursor()
list1 = (1, 1, 2, 4, 6, 5, 3, 12, 11, 12, 11, 9, 10, 8, 6, 6, 7)
list2 = (1, 3, 6, 9, 12)
_cut = pd.cut(list1, list2)
df = _cut.value_counts()
df = df.to_frame()
df = df.reset_index()
df.columns = ['range', 'unit']
# sql로 변환하는 과정에서 오류 발생!
df.to_sql('test', conn)
cur.execute("SECLECT * FROM test")
rows = cur.fetchall()
for row in rows:
print(row)
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력