在加载文件后,我尝试删除2列,但是每次删除1列时,我试图删除更改的下一列的索引,因此我必须使用index-1。没问题,如果只有2列,但是如果我必须删除几列,该如何一次完成所有操作?
for file in files:
fileName = os.path.splitext(file)[0]
if fileName == 'Any file name':
wb = load_workbook(file)
sheet = wb.active
# Delete the first 3 rows
sheet.delete_rows(1, 3)
# Delete Column G
sheet.delete_cols(7)
# Delete Column L
sheet.delete_cols(12)
workbook.save(file)
我应该使用numpy之类的东西还是使用DataFrames处理所有事情?
答案 0 :(得分:1)
如果依赖性不是太重,我建议为此使用熊猫。 Pandas具有一个read_excel
函数,该函数在后台使用Openpyxl,并且与Pandas DataFrames一起使用通常是符合人体工程学的,并且对于您可能会遇到的大多数问题,在线资源(以及解决堆栈溢出问题的方法)要多得多。
import pandas as pd
for file in files:
fileName = os.path.splitext(file)[0]
if fileName == 'Any file name':
df = pd.read_excel(file)
# Delete the first 3 rows
df = df.drop([0, 1, 2], axis = 0)
df = df.drop([7, 12])
# Or if your excel file is labeled
# df = df.drop(["G", "L"])
df.write_excel(fileName)
答案 1 :(得分:0)
您可以删除以最右边的索引开头的值。例如,从列表中删除第0,第1和第2个索引:
>>> x = [0,1,2,3,4,5,6]
>>> del x[2]
>>> del x[1]
>>> del x[0]
>>> x
[3, 4, 5, 6]
将结果与您的方法进行比较,该方法从左到右删除:
>>> x = [0,1,2,3,4,5,6]
>>> del x[0]
>>> del x[1]
>>> del x[2]
>>> x
[1, 3, 5, 6]