MySQL的矢量化查找,并添加到DataFram

2024-05-29 10:41:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力做到以下几点:

  1. 遍历包含列“Col1”和“Col2”的数据帧
  2. 取“Col1”中的每一行,使用该值搜索MySQL db
  3. 用结果替换“Col2”中同一行的值

我倾向于For-loop方法,但是有没有更快的矢量化方法。到目前为止我使用的粗略代码:

    rsp_df = pd.DataFrame(pd.read_csv(raw_data_path))
cur = mydb.cursor()

for x in rsp_df['Col1']:
    query = ("SELECT stuff FROM some-table WHERE Asin = '%s'" % str(x))
    cur.execute(query)
    rows = cur.fetchone()
    print rows

非常感谢!你知道吗


Tags: 数据方法loopdffordbmysqlquery
1条回答
网友
1楼 · 发布于 2024-05-29 10:41:32

考虑将MySQL查询与Pandas数据框合并,方法是将查询导入一个单独的数据框。通过这种方式,您可以一次在所有情况下进行匹配,而无需循环,对列的任何条件更改都可以在一个调用中完成。你知道吗

下面是一个left连接合并,用于保持rsp\u df中的所有记录是否匹配。mydf中缺少内容表示记录不匹配。然后您可以用所需的结果替换Col2(我不确定您所指的结果,可能是查询的内容中的一列):

from sqlalchemy import create_engine

engine = create_engine('mysql://user:pwd@localhost/database')

mydf = pd.read_sql("SELECT stuff FROM some-table", con=engine)

merged_df = pd.merge(rsp_df, mydf, left_on=['Col1'], right_on=['Asin'], how='left')

mergedf.loc[pd.notnull(mergedf['Asin']), 'Col2'] = mergedf['result']

相关问题 更多 >

    热门问题