我有一个包含用户id的CSV文件。此CSV文件作为dask-dataframe导入。进入数据帧后,我需要为id列中的每个条目获取该user-id,并在其上运行一个SQL查询来获取该user -id的用户名,并将其添加到新列中的dataframe。我有几个这样的列需要获取。
我不确定对DASK数据帧中的值运行select查询的dask方法是什么。我该怎么做呢?我不想走命令式路线,并使用for循环来解决它。
发布于 2020-03-18 23:17:23
这还不是一个完整的答案,但我还不能评论
在一个循环中运行多个查询效率很低,最好只运行一个查询,将数据库中的所有用户-id用户名对放到另一个数据帧中,然后使用Dask的merge方法连接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")https://stackoverflow.com/questions/60741353
复制相似问题