Выполнение запроса mysql для каждого значения в столбце в DASK - PullRequest
1 голос
/ 18 марта 2020

У меня есть CSV-файл, который содержит идентификатор пользователя. Этот CSV-файл импортируется как dask-dataframe. Оказавшись внутри фрейма данных, мне нужно взять этот идентификатор пользователя для каждой записи в столбце id и выполнить запрос SQL, извлекающий имя пользователя с этим идентификатором пользователя, и добавить его в фрейм данных в новом столбце. , У меня есть несколько таких столбцов, которые нуждаются в извлечении.

Я не уверен, каков DASK-способ выполнения запросов select для значения в кадре данных dask. Как бы я go об этом? Я не просто хочу go императивный маршрут и решить его, используя for-l oop.

1 Ответ

0 голосов
/ 18 марта 2020

Это не полный ответ, но я пока не могу комментировать

Выполнение нескольких запросов в al oop довольно неэффективно, было бы лучше просто выполнить один запрос, чтобы получить все из пары user-id username из вашей базы данных в другой фрейм данных, затем используйте метод слияния Dask, чтобы объединить два фрейма данных в столбце user_id. https://docs.dask.org/en/latest/dataframe-joins.html

Не очень опытно с Dask, большая часть моего опыта с Pandas, так что может быть немного больше, чем это, но что-то вроде этого:

import dask.dataframe as dd
import pandas as pd

# my_db_connection using whatever database connector you happen to be using
dask_df == dd.read_csv("your_csv_file.csv")
user_df = pandas.read_sql("""
    SELECT user_id, username
    FROM user_table
    """, con=my_db_connection
)

# Assuming both dataframes use "user_id" as the column name, 
# if not use right_on and left_on arguments
merged_df = dask_df.merge(user_df, how="left", on="user_id")
...