我只需要做的是,读取一些xlsx文件,并删除每一行包含检查标记。所以我试了一下。
df = pd.read_excel("file.xlsx")
df = df[~df['Locked'].isin([stringlist])] # got several different check marks in stringlist
不幸的是,当我尝试下面的代码时,我注意到上面的代码不能读取复选标记。
df = pd.read_excel("file.xlsx")
print (df)
Users: Locked:
user1 NaN
user2 NaN
在xlsx文件的Locked列中,有user2的校验。然而,pandas无法看到它,仍然加载所有的数据帧与'NaN'值。我的问题是,我可以解决这个问题吗?在xlsx文件中,检查的是小图片。我并不真的需要加载这些图像,比如勾选字符,我只是需要以某种方式读取它们,所以我可以告诉python,如果锁定的单元格不是'NaN',就删除这一行。
我找到了一个解决方案,在主代码中加入了这段代码。
import win32com.client
x=win32com.client.Dispatch("Excel.Application")
wb=x.Workbooks.Open("<path_to.xlsx>")
ws=wb.Sheets("Sheet1")
for i in ws.Shapes:
print i.TopLeftCell.Address
上述代码的结果是:
$B$2
然后我将这些图片保存在列表中,然后我用.NET技术删除这些单元格。
for n in cell_list:
a = n[3:]
df = df.drop([a])
请注意,上面的代码并不能识别图像是什么。在我的例子中,我只在锁定的单元格中得到了复选标记(从win32com中识别为$B),所以这对我来说工作得很好。