2016-02-25 57 views
0

我一直在嘗試使用iterrows,並且沒有使用if/else語句從DataFrame列返回計算值。我開始認爲這是一種錯誤的方法。熊貓:使用iterrows返回計算值

在這個例子中我有兩個變量xy,和一個數據幀:

category number 
0 one   13 
1 two   14 
2 one   7 
3 three  8 
4 one   3 
5 two   8 
6 four  9 

如果類別是一個或兩個,除以2相應的數字和半值分配給變量x和半到變量y。但是,如果類別爲三或四,則將整個相應編號分配給變量y。然後xy將求和結果,如:

x = 22.5
(因爲:13/2 + 14/2 + 7/2 + 3/2 + 8/2 = 22.5)

y = 39.5
(因爲:13/2 + 14/2 + 7/2 + 8 + 3/2 + 8/2 + 9 = 39.5)

我還沒有發現在使用這樣的iterrows任何例子。這些類型的計算甚至可能使用iterrows還是有更好的方法?

回答

1

您可以使用.loc來查看您正在查看的每種情況,然後根據情況進行彙總。

case1 = ['one', 'two'] 
case2 = ['three', 'four'] 
x = df.loc[df.category.isin(case1), 'number'].sum()/2 
y = x + df.loc[df.category.isin(case2), 'number'].sum() 
+0

這工作完美。從未考慮過將'isin'與'loc'結合起來 - 這種強大的組合。謝謝。 – RDJ