Python Pandasを使用して、特定のシリーズの各単語に存在する複数の特殊文字のカウントの総数を見つけるにはどうすればよいですか?
入力 −シリーズがあると仮定します
0 fruits!! 1 *cakes* 2 $nuts 3 #drinks dtype: object
入力 −シリーズ内の複数の特殊文字の合計カウント数の結果は2です。
この質問に対するさまざまな解決策を見つけてみましょう。
ソリューション1
これを解決するには、以下の手順に従います-
-
シリーズを定義する
-
値の特殊文字リストを作成します。
-
特殊文字の初期値と特殊文字の合計カウント値を0に設定します。
-
forループを作成し、シリーズのすべての値に1つずつアクセスし、if条件を作成して、次のように特殊文字に基づいて値を比較します-
for i in data: chars_count = 0 for j in list(i): if j in special_char: chars_count = chars_count+1
-
if条件を設定し、カウント値を確認してください。カウントが1より大きい場合は、合計カウントを出力します。
以下に定義されています-
if(chars_count>1): total_count = total_count+1 print(total_count)
ソリューション2
または、正規表現とラムダ関数フィルターメソッドを使用して合計数を見つけることもできます。
これを解決するには、以下の手順に従います-
-
シリーズを定義する
-
ラムダフィルターメソッドを適用して、特殊な文字()に基づいて入力を検証します。
-
長さが複数あることを確認してください。以下に定義されています-
l=["fruits!!","*cakes*","$nuts","#drinks"] data=pd.Series(filter(lambda x:1<len(re.findall(r"\W",x)),l))
例
理解を深めるために実装を見てみましょう-
import pandas as pd import string l = ["Fruits!!","*Cakes*","$Nuts","#Drinks"] data = pd.Series(l) chars=string.punctuation special_char=list(chars) total_count = 0 for i in data: chars_count = 0 for j in list(i): if j in special_char: chars_count = chars_count+1 if(chars_count>1): total_count = total_count+1 print(total_count)
ソリューション3
例
import pandas as pd import re l=["fruits!!","*cakes*","$nuts","#drinks"] data=pd.Series(filter(lambda x:1<len(re.findall(r"\W",x)),l)) print("count:",len(data))
出力
上記のプログラムの出力は次のとおりです-
2
-
Pythonでxより大きい最小の数を見つける方法は?
組み込み関数ceil()は、指定された数値よりも大きい最小の数値を返します >>> x=6.67 >>> import math >>> math.ceil(x) 7 >>> x=1.13 >>> math.ceil(x) 2 >>> x=5.78 >>> math.ceil(x) 6 >>> x=-5.78 >>> math.ceil(x) -5 -5は-5.78より大きいことに注意してください
-
Pythonで3つ以上の文字列から最長の共通部分文字列を見つける方法は?
最長共通部分文字列アルゴリズムの一般的な動的計画法の実装は、O(nm)時間で実行されます。以下は、最も長い一般的な部分文字列アルゴリズムの実装です。 例 def longest_common_substring(s1, s2): m = [[0] * (1 + len(s2)) for i in xrange(1 + len(s1))] longest, x_longest = 0, 0 for x in xrange(1, 1 + len(s1)): for y