2016-04-15 57 views
0

我想在我的數據框df裏面有4個列表(在我的df中有3個數字5)來統計數字5的總髮生次數。但在我的代碼下方,if語句遇到第一個False返回時停止,並且不計數df最後一個列表中的第三個5。我如何解決這個問題?如何使用python if語句來計算總數?

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

你沒有正確迭代。在升 \t爲項:代替使用範圍爲'I(4)'使用這樣的: – n1c9

+1

'用於升在DF \t \t如果項== 5: \t \t \t打印( 'OK') \t \t \t計數器+ = 1 \t \t否則: \t \t \t打印( '否') 打印counter' – n1c9

+2

你'df'不是數據幀。 –

回答

3

你需要指數隨in這裏:

if df[n].count(m): 

更好:

if df[i].count(m): 

較短方式:

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

感謝邁克·米勒!更短的方式是一個非常好的解決方案! –

0

你沒有得到到看看ev因爲只有在列表中找到'5'時纔會增加n。但是,您只嘗試4次,因此您實際上正在查看[2,4,6,8,10]兩次,然後耗盡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!你的方法是另一個有趣的方式來做到這一點。 –