我有一个导出的文件,其中包含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服务,因此我宁愿不通过命令行进行操作。
答案 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)