python-3.x - Python 脚本的改进 | 表现
问题描述
我写了一个代码。但这很慢。目标是寻找匹配项。它不一定是一对一的比赛。
- 我有一个包含大约 3,600,000 个条目的数据框——>“SingleDff”
- 我有一个包含大约 110'000 个条目的数据框——>“dfnumbers”
现在 - 代码尝试找出在这 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
现在我尝试查找匹配项 - 我们可以找到哪个号码的文件
感谢您的投入
解决方案
推荐阅读
- javascript - 从函数范围更改变量的值
- reporting-services - 索引超出了 SSRS 中的数组范围
- reactjs - React Native ScrollView 不断向后滚动
- python - 日期列在 pyspark 数据框中填充为空
- node.js - Node.js 无效参数 - 参数必须是字符串类型
- xpath - Scrapy xpath在scrapy shell中返回空列表
- visual-studio-setup-proje - Visual Studio 安装程序安装程序在安装程序覆盖期间未更新旧配置文件
- html - 如何创建html不规则表格?
- javascript - 过滤计算属性不返回所有元素
- extjs - 同时加载所有商店 (2)