2016-04-15 7 views
0

私のデータフレームの合計発生数をdfの中に3つの数字5が入っています。dfの中に4つのリストがあります。しかし、私のコードでは、ifステートメントは、最初のFalseリターンが発生したときに停止し、最後のリストの3番目の5dfにはカウントされません。どのように私はこれを解決できますか?python if文の合計数をどのように数えることができますか?

あなたがここに niないとインデックスに必要
df = [[1,3,5,7,9],[1,2,3,4,5],[2,4,6,8,10],[2,5,6,8,10]] 
n,m,counter=0,5,0 

for i in range(4): 
    if df[n].count(m): 
     print('ok') 
     counter=counter+1 
     n=n+1 
    else: 
     print('NO') 
print(counter) 
+0

あなたは正しく反復していません。 – n1c9

+1

'DFにおけるLの場合:代わりに(4) 'のようなものを使用する範囲においてiについて'使用の項目の \tリットル中: \t \t項目== 5の場合: \t \t \tプリント( 'OK')他+ = 1 \t \t \t \t \tカウンター: \t \t \t印刷( 'NO') 印刷counter' – n1c9

+2

あなた 'df'がデータフレームではありません。 –

答えて

3

:あなたがに取得されていません

sum(x.count(5) for x in df) 
+0

おかげでマイク・ミュラー!あなたの短い道は非常に良い解決策です! –

0

if df[n].count(m): 

ベター:

if df[i].count(m): 

短縮方法evを見てリスト内で '5'が見つかった場合には、nをインクリメントしているだけなので、eryリストに含まれています。しかし、あなたは4回しか試していないので、効果的に[2,4,6,8,10]を2回見て、次にrangeを使い果たしています。

+0

ありがとうサム!あなたは正しいです、私は間違いを理解しました。 –

1

私は少し違った問題にアプローチしますが、ここで私は、この問題を解決するために使用するコードです:

df = [[1,3,5,7,9],[1,2,3,4,5],[2,4,6,8,10],[2,5,6,8,10]] 

m=5 
counter = 0 
for sublist in df: 
    counter += sublist.count(m) 
print(counter) 

よりもむしろ複数の変数を作成し、「forループ」を持って、私はのために設定しましたループを使用して元のリストの各リストを反復処理します。

+0

ありがとうApero!あなたのアプローチはそれを行うもう一つの興味深い方法です。 –

関連する問題