熊猫-遍历超过一百万个细胞

时间:2020-04-02 08:36:02

标签: python pandas numpy

我有一个导出的文件,其中包含20万多个代码,我仅尝试过滤掉这些代码。由于每个代码都具有多行不相关的信息,因此文件本身变得超过一百万行。

我编写了一个脚本来读取文件,根据前缀查找代码,然后写入另一个.csv文件:

import pandas as pd

df = pd.read_csv('export_file.csv')

output = []

for index, row in df.iterrows(): 
  if ('PREFIX-01' in str(row['code'])):
    code = str(row['code'])
    output.append(code)

with open('output.csv','w') as file:
    for line in output:
        file.write(line)
        file.write('\n')

该脚本对于较少数量的代码(大约50k)效果很好,但是要花很长时间才能遍历所有这些行。 Python和Pandas对我来说还比较陌生,所以我想知道是否有一种方法可以使脚本更有效?

我听说grep在这里很有用,但是目标是最终将其写入Web服务,因此我宁愿不通过命令行进行操作。

1 个答案:

答案 0 :(得分:1)

多亏了@Datanovice,我的程序才能更好地工作。将执行时间从大约10分钟缩短至5秒。

import pandas as pd
import time

df = pd.read_csv('exported_file.csv')


df2 = df[df['code'].str.contains('PREFIX-01', na=False)]
output = df2['code'] # Feels redundant for this step (only extract the code column) 
                     # Tips are welcome how to bake it into the line above 

output.to_csv('output.csv', sep=',', encoding='utf-8', index=False)