Улучшение сценария Python | Представление - PullRequest
0 голосов
/ 16 января 2020

Я написал код. Но это очень медленно. Цель состоит в том, чтобы искать спички. Это не обязательно совпадения один на один.

  • У меня есть фрейм данных, в котором содержится около 3 600 000 записей -> "SingleDff"
  • У меня есть фрейм данных с примерно 110 000 записей -> "dfnumbers"

Сейчас - Код пытается выяснить, можно ли из этих 110 000 записей найти записи в 3 600 000 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 

Теперь я пытаюсь найти совпадения - На какое число мы можем найти документы

Спасибо за ваш вклад

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...