首页 > 解决方案 > Python 脚本的改进 | 表现

问题描述

我写了一个代码。但这很慢。目标是寻找匹配项。它不一定是一对一的比赛。

现在 - 代码尝试找出在这 110'000 个条目中是否可以找到 3'600'000 百万中的条目。

我添加了一个计数器来查看它有多“快”。24 小时后,我只收到了 11'000 个条目。总共 10%

我现在正在寻找方法和/或想法来提高代码的性能。

编码:

import os
import glob
import numpy as np
import pandas as pd

#Preparation
pathfiles = 'C:\\Python\\Data\\Input\\'
df_Files = glob.glob(pathfiles + "*.csv")

df_Files = [pd.read_csv(f, encoding='utf-8', sep=';', low_memory=False) for f in df_Files]
SingleDff = pd.concat(df_Files, ignore_index=True, sort=True) 

dfnumbers = pd.read_excel('C:\\Python\\Data\\Input\\UniqueNumbers.xlsx')


#Output
outputDf = pd.DataFrame()

SingleDff['isRelevant'] = np.nan
count = 0
max = len(dfnumbers['Korrigierter Wert'])
arrayVal = dfnumbers['Korrigierter Wert']
for txt in arrayVal:
    outputDf = outputDf.append(SingleDff[SingleDff['name'].str.contains(txt)], ignore_index = True)
    outputDf['isRelevant'] = np.where(outputDf['isRelevant'].isnull(),txt,outputDf['isRelevant'])
    count += 1

outputDf.to_csv('output_match.csv')

编辑:数据示例

在 110'000 数据框中,我有这样的东西:

ABCD-12345-1245-T1 
ACDB-98765-001 AHHX800.0-3

在巨大的 DF 中,我有如下条目:

AHSG200-B0097小样图.dwg 
MUDI-070097-0-05-00.dwg 
ABCD-12345-1245.xlsx 
ABCD-12345-1245.pdf 
ABCD-12345.xlsx 

现在我尝试查找匹配项 - 我们可以找到哪个号码的文件

感谢您的投入

标签: python-3.xpandasperformancenumpymerge

解决方案


推荐阅读