最近我需要编写一个python脚本来找出在excel工作表中出现特定字符串的次数。如何使用xlwings或pandas获取所有非空单元格?
我注意到我们可以使用*xlwings.Range('A1').table.formula*
来实现这个任务,只有当单元格是连续的。如果细胞不连续我怎么能做到这一点?
最近我需要编写一个python脚本来找出在excel工作表中出现特定字符串的次数。如何使用xlwings或pandas获取所有非空单元格?
我注意到我们可以使用*xlwings.Range('A1').table.formula*
来实现这个任务,只有当单元格是连续的。如果细胞不连续我怎么能做到这一点?
这是一个小黑客,但为什么不。顺便说一句,我假设你正在使用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))
正如在评论中澄清,如果你已经有了一个数据框,你可以简单地使用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
感谢您的回复,@DeepSpace。看起来你的代码不起作用。什么是变量* string_to_search *用于?因为我找不到在第三行中调用的这个变量。 –
@YusonKong我搞砸了,对不起。我修好了它。 – DeepSpace
标题和你的问题不匹配。你想获得非空单元格,还是计算给定字符串在数据框中的时间? – DeepSpace
你想在特定的列中对它进行计数吗?或整个工作表中? @OmerBA覆盖整个工作表中的 – OmerBA
。谢谢 –