Python删除excel电子表格中的一行

| 我有一个非常大的ex​​cel文件,我需要删除大约20,000行,这取决于满足一个简单的条件,而excel在使用过滤器时不会让我删除这么复杂的范围。条件是: 如果第一列包含值X,那么我需要能够删除整行。 我正在尝试使用python和xlwt将其自动化,但不确定从何处开始。寻求一些代码片段来使我入门... 感谢您提供的任何帮助!     
已邀请:
不要删除。只需复制您需要的内容即可。 读取原始文件 打开一个新文件 遍历原始文件的行(如果该行的第一列不包含值X,则将此行添加到新文件中) 关闭两个文件 将新文件重命名为原始文件     
我喜欢使用COM对象来获得这种乐趣:
import win32com.client
from win32com.client import constants

f = r\"h:\\Python\\Examples\\test.xls\"
DELETE_THIS = \"X\"

exc = win32com.client.gencache.EnsureDispatch(\"Excel.Application\")
exc.Visible = 1
exc.Workbooks.Open(Filename=f)

row = 1
while True:
    exc.Range(\"B%d\" % row).Select()
    data = exc.ActiveCell.FormulaR1C1
    exc.Range(\"A%d\" % row).Select()
    condition = exc.ActiveCell.FormulaR1C1

    if data == \'\':
        break
    elif condition == DELETE_THIS:
        exc.Rows(\"%d:%d\" % (row, row)).Select()
        exc.Selection.Delete(Shift=constants.xlUp)
    else:
        row += 1

# Before
# 
#      a
#      b
# X    c
#      d
#      e
# X    d
#      g
#        

# After
#
#      a
#      b
#      d
#      e
#      g
我通常会记录Excel宏的摘要,并将它们与Python粘合在一起,因为我不喜欢Visual Basic :-D。     
您可以尝试使用csv阅读器: http://docs.python.org/library/csv.html     
如果您只需要删除数据(而不是删除行)(即移动行),则可以尝试使用我的模块PyWorkbooks。您可以在此处获取最新版本: https://sourceforge.net/projects/pyworkbooks/ 有一个pdf教程可以指导您如何使用它。编码愉快!     
您可以使用,
sh.Range(sh.Cells(1,1),sh.Cells(20000,1)).EntireRow.Delete()
将在打开的Excel电子表格中删除第1到20,000行,因此,
if sh.Cells(1,1).Value == \'X\':

   sh.Cells(1,1).EntireRow.Delete()
    
我已经使用Pandas软件包实现了这一目标。
import pandas as pd

#Read from Excel
xl= pd.ExcelFile(\"test.xls\")

#Parsing Excel Sheet to DataFrame
dfs = xl.parse(xl.sheet_names[0])

#Update DataFrame as per requirement
#(Here Removing the row from DataFrame having blank value in \"Name\" column)

dfs = dfs[dfs[\'Name\'] != \'\']

#Updating the excel sheet with the updated DataFrame

dfs.to_excel(\"test.xls\",sheet_name=\'Sheet1\',index=False)
    

要回复问题请先登录注册