2016-01-04 233 views
1

如何使用Python從現有Excel工作表中刪除整個空白行?使用Python刪除現有Excel工作表中的整個空白行

我需要不解決: 包括讀取整個文件並沒有被刪除的行重寫它。

是否有直接的解決方案?

+0

哇,全部大寫?你有什麼嘗試?它只是一個空白行還是有多個空行? – astrosyam

+0

我想精確地執行excel的「刪除行」操作,其中行被刪除並且其他行向上移動 – Jd16

+0

如果我可以從Excel工作表中刪除單個行,那將是可以的。 – Jd16

回答

1

如果使用的內存是不是你可以使用一個額外的數據幀實現這一目標的問題。

import pandas as pd 

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

dfs = xl.parse(xl.sheet_names[0]) 
df1 = dfs[dfs['Sal'] == 1000] 
df1 = df1[df1['Message']=="abc"] 

ph_no = df1['Number'] 

print df1 
2

我用熊貓包實現....

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) 
+0

看起來這個解決方案只適用於1列,但如果有多列?此外,這行'dfs = dfs [dfs ['Name']!='']'給出了一個類型錯誤'TypeError:invalid type comparison'。 – manty

+0

是的你是對的。此聲明不能應用於多列。如果我們想要刪除一個名爲「abc」且薪水爲2000的行,我們不能用這個語句來做到這一點。但是如果我們想要刪除一個名稱爲「abc」或Salary爲2000的行,我們可以用這個語句重複編寫,然後最終將DataFrame轉換爲Excel。 – Jd16

0

要刪除一個Excel行,說行5列無所謂所以1:

sh.Cells(5,1).EntireRow.Delete() 

要刪除某個範圍的Excel行,說排5〜20

sh.Range(sh.Cells(5,1),sh.Cells(20,1)).EntireRow.Delete() 
相關問題