2017-12-07 8 views
1

他の2つの列のブール値に基づいてDataFrameに新しい列を追加しようとしています。 2つの列のうちの1つが真の値を持つ場合、新しい列をTrueに戻します。両方の列にfalse値がある場合のみ、この新しい列がFalseを返すようにします。他の2つの列のブール値に基づいてブール値を返します。

私は非常にPythonに新しいので、私は遠くに得ていません。

data = DataFrame({ 'name': ['A', 'B', 'C', 'D', 'E'], 
        'has_a_pass': [False, False, False, True, False], 
        'is_an_employee': [True, False, True, True, False] }) 

誰もがこれを解決するための任意の有用な提案を持っている。このような

A DATAFRAMEは良い例でしょうか? is_an_employeeフィールドが文字列ではなく真偽値でしたが、聞きしたいブール値になるはずと仮定すると、意図的だった場合

答えて

3

わからない:

data = pd.DataFrame({ 'name': ['A', 'B', 'C', 'D', 'E'], 'has_a_pass': [False, False, False, True, False], 'is_an_employee': [True, False, True, True, False] }) 
data['new column'] = data['is_an_employee'] | data['has_a_pass'] 
data 
Out[49]: 
    has_a_pass is_an_employee name new column 
0  False   True A  True 
1  False   False B  False 
2  False   True C  True 
3  True   True D  True 
4  False   False E  False 
+0

おかげでそんなに、私は信じることができませんこれは簡単なことでしたが、私はかなり長い間関数ルートを作ろうとしていました!あなたの助けが大いに感謝しています:) – MikeTaylor

1

IIUC:

In [170]: data['new'] = data[['has_a_pass','is_an_employee']].any(1) 

In [171]: data 
Out[171]: 
    has_a_pass is_an_employee name new 
0  False   True A True 
1  False   False B False 
2  False   True C True 
3  True   True D True 
4  False   False E False 
関連する問題