如何使用xlwings或pandas得到所有的非空单元格?

最近我需要编写一个python脚本来查找在excel工作表中出现特定string的次数。

我注意到我们可以使用*xlwings.Range('A1').table.formula*来实现这个任务,只有当单元格是连续的。 如果细胞不连续我怎么能做到这一点?

这是一个有点哈克,但为什么不。 顺便说一下,我假设你正在使用python 3.x.

首先,创build一个与您正在查找的值匹配的新布尔数据框。

 import pandas as pd import numpy as np df = pd.read_excel('path_to_your_excel..') b = df.applymap(lambda x: x == 'value_you_want_to_find' if isinstance(x, str) else False) 

然后简单地总结所有的发生。

 print(np.count_nonzero(b.values)) 

正如在评论中澄清,如果你已经有一个数据框,你可以简单地使用count (注意: 必须有一个更好的办法):

 df = pd.DataFrame({'col_a': ['a'], 'col_b': ['ab'], 'col_c': ['c']}) string_to_search = '^a$' # should actually be a regex, in this example searching for 'a' print(sum(df[col].str.count(string_to_search).sum() for col in df.columns)) >> 1