2017-08-30 137 views
0

我开始基于行内容编辑Excel文档的一些Python代码。我的编码不是很强,所以我正在寻找一些方向。根据标准删除excel中的行

的Excel文档是一组从孤立的照片上活力的粉红色色度键的背景中提取像素LAB值。

这些Excel文档太大(它们的范围从大约200,000行接近的过人之处行能力的限制)使用的查找和替换功能,只是消除我不需要行。

我发现类似这样here

然而线程,我需要它来分析的三排(而不是一个)中的内容,如果他们符合两个数字之间。

一些实施例的数据: image

列标记为L,A和B是程序需要去筛选的那些。 谢谢。

+1

您可以在描述中添加数据表,而不仅仅是图像链接吗?另外,你可以发布到目前为止你尝试过的吗? – matov

回答

0

我想你可能意思是说,你想看看只有三列,而不是只有三排?

我的第一个建议是,保存excel工作表为CSV如果可能的话。 (如果不是我敢肯定,有包读取.xls的,我只是不知道他们,因为是的.csv更容易使用)

无论如何,有几个选项。由于该文件对于Excel来说太大,这对于管道来说是一个很好的用例。 (对于这种方法,如果你在windows上,你需要启用开发者模式并安装bash客户端)。规范地从庆典:

cat big_file.csv | python analyze_big_file.py > output 

很明显,你也可以使用Python的家当把它清理干净:

cat big_file.csv | ./analyze_big_file.py > output 

从这里,你只需要编写Python脚本。它应该是这个样子:

import sys,csv 
for line in sys.stdin: 
    line_reader=csv.reader(line, delimiter=',', quotechar='|') 
    for elem in line_reader: 
     # do something 
     # eg, if <condition>: sys.stdout.print(elem) 
     # sys.stdout.print(',') 
    # sys.stdout.print('\n') 

这种做法是很好的,可以不适合到内存非常大的文件,并让您的每一个元素遍历以csv

另一种方法是加载该文件直接进入python。优点是您不必担心打印到标准输出或了解>,|运营商。 (也许你不必打开终端,如果你使用原子或一些IDE)。此外,除了打印到标准输出之外,你还可以做一些很酷的事情(例如,存储结果并对它们做一些辅助工作 - 这也可以用管道来实现,但是你必须为第一个输出写一个全新的.py脚本)

这里,只是检查出CSV包。这非常简单。例如:

import sys 
with open('big_file.csv',newline='') as f: 
    freader=csv.reader(f,delimiter=',',quotechar='\') 
    for elem in freader: 
     #do something with elem.