使用Python清理Excel电子表格

我似乎有一件简单的事情 – 我已经差不多完成了,但是有一个令人讨厌的问题,我应该能够摆脱,但这是难以捉摸的。

我有一些Excel .xls文件。 文件名的格式为.xls。 我创build了filenames.txt文件来迭代以获取公司名称。 每个文件在前4行左右都有垃圾数据,所以我需要删除所有文件中的前四行。 然后我需要在第一列的位置添加一列。

我的代码运行没有错误,但输出不完全是我所需要的。 我遇到的唯一问题是:1.我得到了一个领先的专栏,并补充说我并不期待索引号。 2. strip命令似乎没有剥离“.xls” – 所以最终插入到Excel中的列是.xls,而不是。 3.因为'.xls'没有正确地被剥离,所以to_excel命令是以'.xls.xls'扩展名保存文件。

我读了一些类似的情况,所以我有这个代码被使用:

import pandas as pd import os path = os.chdir(r"C:\Users\mheitz\Documents\testing") filenames = [names.strip('\n') for names in \ open(r"C:\Users\mheitz\Documents\testing\filenames.txt",'r').readlines()] for name in filenames: vendors = pd.read_excel(name, header = 11, skiprows =0-10) vendors.insert(0,'Vendor Name',(name[:-4])) vendors.to_excel(r"C:\Users\mheitz\Documents\testing\clean\clean" + name) 

 import pandas as pd exhibit_company = [i.strip('\n')[:-4] for names in \ open('filenames.txt','r').readlines()] for company in exhibit_company: vendors = pd.read_excel(company, header = 5, skiprows =0-4) vendors.insert(0,'Vendor Name',(company)) vendors.to_excel('/Users/michaelheitz/Desktop/Work Stuff/Data/clean'+company+'.xls') 

说明:

 open('filenames.txt', 'r').readlines() ['james.xls\n', 'nancy.xls\n', 'temitope.xls\n', 'bianca.xls\n'] 

要删除\ n,我们使用strip('\ n')。

 for name in names: name.strip('\n') james.xls nancy.xls temitope.xls bianca.xls 

要删除.xls,我们使用[:-4],因为len(.xls)= 4,使用负数表示4个字符之后的slice,从后面开始计数。

  for name in names: name[:-4] james nancy temitope bianca 

有关readline()的更多信息,请参见https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects

有关生成器的更多信息,请参见https://docs.python.org/3.6/tutorial/datastructures.html#list-comprehensions

不需要将值循环到数据框中。 让我们回到名单列表,

 list_of_names = [name1,name2,name3] df = pd.DataFrame(list_of_names,columns={'company_names'}) 

再次,感谢您的帮助…惊人的是,一个良好的睡眠和一些咖啡将为您的精神状态。 今天早上我意识到我做得太多了。 我只需要一个列表,而不是两个 – 来遍历。 ;)我将发布上面的最终代码 – 我仍然需要解决的唯一的问题是它与索引#插入的领先的列,但这应该是一个简单的修复 – 至less我可以通过86 Excel文件虽然!