最近我需要編寫一個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
。謝謝 –