【发布时间】:2022-01-20 22:39:21
【问题描述】:
我有一个包含 54 列和 100000 行的数据框,我需要在 where 条件下使用行值运行 sql 查询。有没有更快的方法来实现这一点。这就是我所做的
我的代码:
def GetTMIDCMID(ClientFileDf):
try:
CMCPCodedf_lst=[]
NewColumnName = ['TCM_TM_ID','TCM_CM_ID']
col_one_list = ClientFileDf['tradingmemberpan'].tolist()
col_one_list = ['' if pd.isna(x) else x for x in col_one_list]
for i in range(len(col_one_list)):
Query="select OFF_TM_ID,OFF_CM_ID from UCIDBA.COR_OFF_VW where OFF_TM_PANNO ='" + col_one_list[i] +"'"
df_CMCPCodeDF = pd.read_sql(Query, con=connection)
df_CMCPCodeDF_lst=df_CMCPCodeDF.values.tolist()
CMCPCodedf_lst.extend(df_CMCPCodeDF_lst)
CMCPCodedf=pd.DataFrame(CMCPCodedf_lst)
CMCPCodedf.columns = NewColumnName
return CMCPCodedf
except Exception as ex:
logging.exception("CollateralValidation:Utility-> GetTMIDCMID : |")
print(ex)
return False
这只是功能之一。在某些情况下,实现了多个 where 子句条件。dataframe 作为函数的参数传递。 谢谢。
【问题讨论】:
-
也许这可能有助于通过多处理提高性能? stackoverflow.com/questions/51164163/multiprocessing-pandas-sql