python - MySQL的向量化查找,并添加到DataFrame中

标签 python mysql dataframe

我正在尝试执行以下操作:

  1. 浏览包含列“Col1”和“Col2”的 DataFrame
  2. 获取“Col1”中的每一行,使用该值搜索 MySQL 数据库
  3. 将“Col2”中同一行的值替换为结果

我倾向于 For 循环方法,但是是否有更快的矢量化方法。到目前为止我正在使用的粗略代码:

    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

非常感谢!

最佳答案

考虑通过将查询导入到单独的数据帧中来将 MySQL 查询与 Pandas 数据帧合并。这样,您可以一次匹配所有情况,而无需循环,并且可以在一次调用中完成对列的任何条件更改。

下面是一个连接合并,用于保持rsp_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']

关于python - MySQL的向量化查找,并添加到DataFrame中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076884/

相关文章:

python - 如何为其中一列包含标点符号、空格的数据集编写代码并删除相应的行?

python - 在 Python 3.3.2 中计算短语频率

python - 在 Python 中将数组转换为 CSV/TSV 格式的字符串

php jquery mysql-更好的方式加载更多

mysql - 职位发布的首选数据库设计

dataframe - 预编译 DataFrames.jl 时出错 : UndefVarError: ComposedFunction not defined

python - 是否可以在 tensorboard 中可视化 keras 嵌入?

python - 在 python django 应用程序中使用 font-awesome

stored-procedures - 使用mysqldump导出mysql数据库包括程序

python - 不比较单个数字Python的排序方法