我试图执行以下操作:
我倾向于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
非常感谢!
答案 0 :(得分:1)
通过将查询导入单独的数据帧,考虑将MySQL查询与Pandas数据帧合并。这样,您可以在不循环的情况下同时匹配所有情况,并且可以在一次调用中完成对列的任何条件更改。
以下是left
加入合并,以保持 rsp_df 中的所有记录匹配与否。 mydf中缺少 stuff 表示不匹配的记录。然后你可以用所需的结果替换 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']