2017-10-14 9 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() 

^これは実際にはサポートされていません。

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

が、「親」で特定の列が大きくてIループとして変更されます。そして、この例では、私は親リストにあった正確に知っていたならば、私は次の操作を行うことができます知っている1 を返します私はリストを参考にしたいと思っています。

答えて

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]]ブロック値の取得:K.P @/ –

+0

を。あなたのパンダを更新してください。 'pip install --upgrade pandas' –

+0

@ K.P。これらのダミー行を最初に試してみてください。それがうまくいけば、データに問題があり、問題を再現する例を表示しなければなりません。そうしないと、私はあなたを助けません。 –

関連する問題