У меня есть куча файлов CSV (не файл базы данных) с данными в них. Предположим, есть два CSV-файла - Candidate.csv и application.csv
Учитывая электронную почту кандидата, мне нужно извлечь соответствующую информацию из этих двух CSV и извлечь их в отдельные файлы CSV.
Логика -
Дано = электронная почта кандидата
Выполнить запрос на кандидате.csv - выберите * из кандидатов, где Email='blah@example.com'
Дамп результатов в Candidate-Filter.csv
Используя столбец "Id" полученной записи-кандидата, выполните запрос к application.csv
Выберите * в приложении, где кандидат ID = 'идентификатор, полученный из предыдущего результата запроса'
выгрузить результат в application-Filter.csv
Мне нужна помощь с выводом результатов в эти отфильтрованные CSV (включая заголовок столбца исходного CSV, поэтому любой, кто просматривает отфильтрованный CSV, знает, какой столбец относится к каким данным)
Я подумал, что могу использовать SQLITE для загрузки CSV-файлов в таблицы памяти и выполнения запросов к ним (и даже экспортировать результат в отдельные CSV-файлы. Теперь в SQLITE есть изящный способ сделать это:
.mode csv
.import 'Candidate.csv candidates'
.headers on
.output 'Candidate-filtered.csv'
Select * from candidates where Email='blah@example.com'
Однако я хочу использовать Python для этого, потому что мне придется хранить переменные из каждого результата (например, Id полученных кандидатов) и использовать их в следующем запросе (запрос к приложению).
Сейчас я хочу попробовать код, который будет работать на Candidates.csv.
Это код Python, который у меня есть:
import sqlite3
import pandas
def extract_Candidate():
conn = sqlite3.connect(':memory:')
data = pandas.read_csv('Candidate.csv')
data.to_sql('candidates',conn)
cur = conn.cursor()
cur.execute("Select * from candidates where Email='blah@example.com'")
rows = cur.fetchall()
conn.close()
return rows
candidateRows = extract_Candidate()
print(candidateRows)
Мне действительно не нужно возвращать переменнуюандидата. Пока я могу вывести результаты в CSV, это нормально. Я могу напечатать полученные строки в терминале. Я не знаю, как я могу вывести его в новый CSV-файл (мне нужны все заголовки столбцов, которые присутствовали в исходном CSV-файле).
Большинство результатов поиска показывают, как экспортировать базу данных в памяти на диск. Я не хочу файлы .db. Я просто хочу экспортировать результаты запроса в CSV-файл. Я видел некоторый код экспорта в csv, но они представляют собой заголовки столбцов. Я хочу, чтобы он брал все заголовки столбцов в оригинальном csv, без какого-либо жесткого кодирования.
Следующим шагом является получение столбца «Идентификатор» от всех полученных кандидатов и возвращение их в каком-либо массиве или наборе. Я знаю, что это базовый Python, но я ничего не знаю о Python (или sqlite в этом отношении).
Не стесняйтесь критиковать и код (я все еще волнуюсь, может ли pandas.read_csv обрабатывать ОГРОМНЫЕ CSV-файлы или нет; дайте мне знать ваши мысли).