pandas DataFrame SQLite3 변환에 관하여

조회수 1073회

안녕하세요. 여럿 구글링 해보고 시도해보고 있는데, 이 부분에 막혀서 질문드립니다. 아래와 같이 리스트를 2개 생성하고, pd.cutvalue_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)

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)