2017-02-18 11 views
1

私のデータセットでは、私のカラム名は可変であるため、その名前やその出現順序はわかりません。パンダのブーリアンとして「合格」と「違反」を区別するにはどうすればよいですか?

しかし、DataFrame.all()関数を使用すると、ブール値のみの列(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.all.html)を得ることができます。

しかし、私の列は 'PASS'と 'FAIL'でブール値ではありません。どのように識別できますか?様々なテーブルの

例私が取得したい:

0 1 2 
A Pass 3 
B Fail 3 

0 1 2 
A qq Pass 
B nn Fail 

は、私は私の関数がケース1の[1]を返すようにしたいと[2]の場合には2

ありがとうございました!

編集:Dataframe.all()はコメントに基づいて正しくありません。例えば、このような

+0

あなたの質問は明確ではありません。質問にサンプルコードを追加してください。あなたが達成しようとしていることを理解するのに役立ちます。 –

+1

'DataFrame.all()'の目的を誤解しているようです。列にブール値があるかどうかはわかりません。ブール値で列(または行)の内容を評価し、** all **の値がそのように評価された場合は 'True'または' False'を返します。あなたは分かりにくい位置に1つの列があり、最終的にはブール値に変換されているように見えますが、それを探したいと思っています。それが正しいか? – iled

+0

わかりました。はい、すべてのブール値の列を検索しようとしています。 –

答えて

4

IIUC:.apply()

In [75]: df1 
Out[75]: 
    0  1 2 
0 A Pass 3 
1 B Fail 3 

In [76]: df2 
Out[76]: 
    0 1  2 
0 A qq Pass 
1 B nn Fail 

In [81]: df1.columns[df1.isin(['Pass','Fail']).all()] 
Out[81]: Index(['1'], dtype='object') 

In [82]: df2.columns[df2.isin(['Pass','Fail']).all()] 
Out[82]: Index(['2'], dtype='object') 

または使用:

In [77]: df1.columns[df1.apply(lambda x: x.isin(['Pass','Fail']).all())] 
Out[77]: Index(['1'], dtype='object') 

In [78]: df2.columns[df2.apply(lambda x: x.isin(['Pass','Fail']).all())] 
Out[78]: Index(['2'], dtype='object') 

説明:

In [79]: df1.isin(['Pass','Fail']) 
Out[79]: 
     0  1  2 
0 False True False 
1 False True False 

In [80]: df1.isin(['Pass','Fail']).all() 
Out[80]: 
0 False 
1  True 
2 False 
dtype: bool 
+0

ありがとうございます! :D –

1

>>> import pandas 
>>> df = pandas.DataFrame([ ("a","pass"), ("b","fail"), ("c","pass") ]) 
>>> df 
    0  1 
0 a pass 
1 b fail 
2 c pass 
>>> df[1] 
0 pass 
1 fail 
2 pass 
Name: 1, dtype: object 
>>> t = df[1]=="pass" 
>>> t 
0  True 
1 False 
2  True 
Name: 1, dtype: bool 
>>> t.all() 
False 
>>> 
+0

ここでは、ブール値の列の順序を仮定しました。私はそれがいつ発生するのか、私はその名前を知っているのか分からない。私はちょうどそこに "パス"と "失敗"を知っている –

+0

ああ、あなたは "パス"または "失敗"で列を識別したいので? – Copperfield

関連する問題