如何使用xlwings或pandas获取所有非null单元格?

时间:2016-07-07 20:42:46

标签: python excel pandas xlwings

最近我需要编写一个python脚本来找出excel表中特定字符串出现的次数。

我注意到,只有当细胞是连续的时,我们才能使用*xlwings.Range('A1').table.formula*来完成这项任务。如果细胞不连续,我该怎么做?

2 个答案:

答案 0 :(得分:1)

有点hacky,但为什么不呢。 顺便说一句,我假设你使用的是python 3.x。

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

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

答案 1 :(得分:0)

正如评论中所阐明的那样,如果您已有数据框,则只需使用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