最近我需要编写一个python脚本来找出excel表中特定字符串出现的次数。
我注意到,只有当细胞是连续的时,我们才能使用*xlwings.Range('A1').table.formula*
来完成这项任务。如果细胞不连续,我该怎么做?
答案 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