#python #pandas #sqlite #csv #pandas-to-sql
Вопрос:
у меня есть случай, когда df, считанный из csv, а затем записанный в таблицу, содержит пространство для определенных cols.
вот часть csv, на которую ссылаются как на «имя файла» ниже:
id, l, s
1,a,ay
2,b,bee
3,c,see
импорт и подключение к sqlite:
import pandas as pd
import sqlite3
conn = sqlite3.connect('path_to_db')
c = conn.cursor()
затем при запуске этого (опущен параметр заголовка, поскольку, как я полагаю, он равен 0):
>>> df = pd.read_csv('filename')
>>> df
id l s
0 1 a ay
1 2 b bee
2 3 c see
это та часть, в которой я надеюсь, что после вставки будет исправлено…
>>> df.to_sql('table1', conn, if_exists='append', index=False)
поэтому после проверки созданной таблицы в нее было включено место для col 2-3, основанное на выполнении этого:
>>> for items in c.execute('select * from sqlite_master where type="table" and name="table1"'):
... print(items)
...
('table', 'table1', 'table1', 101, 'CREATE TABLE "table1" (n"id" INTEGER,n " l" TEXT,n " s" TEXTn)')
мой вопрос: есть ли способ сказать to_sql
функции, чтобы она игнорировала это?
Комментарии:
1. Обратите внимание, что в первой строке csv-файла после запятой есть пробел. проще всего было бы просто передать правильный заголовок без пробелов при чтении csv
2. Добавление в комментарий @buran, это можно сделать с помощью
df = pd.read_csv('filename', names=['id', 'l', 's'])
или после чтения данных с помощьюdf.rename(columns={' l': 'l', ' s': 's'}, inplace=True)
3. @буран, я вижу это в этом простом случае, но не для примеров десятков или сотен.
4. какие десятки и сотни?
5. @IftahP в этом чтении с именами, разве вам не нужно было бы знать это заранее, чтобы это было похоже на правильное отображение? но как насчет тех случаев, когда у одних есть пробелы, а у других нет или им нравится мой первый комментарий, когда слишком много колов, чтобы просеять