2017-10-14 91 views
-1

我正在使用python的大熊貓,有一個數據幀,如熊貓:如何在多列某些列數行條件值

age portembarked fare numparentschildren passengerclass sex 

0  1    1  1     1    1 1 
1  2    2  1     1    2 2 
2  1    1  1     1    1 2 
... 

我有列名的列表,我想調理名爲「父母」:「年齡」,「車費」,「性」] ,我希望數據是每個列名爲「parent_vals」的值[1,2,2]

哪有我計算數據幀的行數,使每列等於該值?

比如我找熊貓符號,它會做這樣的事情,

count = df[df[parents] == parent_vals].count() 

^這是不實際的支持。然後這個例子將返回1 如果我知道什麼是我知道我可以做以下父清單:

count = df[df["age"]==1 & df["fare"]==2 & df["sex"]==2].count() 

但在「父母」的具體列將通過較大的,因爲我循環改變程序,所以我想引用列表。

回答

0

IIUC,你可以索引列,比較,然後sum增加計數。

df 
    age portembarked fare numparentschildren passengerclass sex 
0 1    1  1     1    1 1 
1 2    2  1     1    2 2 
2 1    1  1     1    1 2 

(df[parents] == [1, 2, 2]).all(1).sum() 
1 

如果收到Invalid broadcasting comparison錯誤,似乎解決方案是將列表轉換爲np.array第一,然後做比較。


詳細

df[parents] == [1, 2, 2] 
    age fare sex 
0 True True True 
1 True False True 
2 False False True 

(df[parents] == [1, 2, 2]).all(1) 
0  True 
1 False 
2 False 
dtype: bool 
+0

我得到無效廣播比較[[1,2,2]]與塊值:/ –

+0

@ K.P。更新你的熊貓; 'pip install --upgrade pandas' –

+0

@ K.P。首先嚐試使用這些虛擬行。如果它有效,那麼問題出在你的數據上,你必須告訴我一個重現你問題的例子,否則我不能幫你。 –