Как построить три входа ИЛИ с помощью панд - PullRequest
0 голосов
/ 25 октября 2019

У меня есть датафрейм df с 3 входами (A, B, C), как указано ниже

A   B   C
0   0   0
0   0   1
0   1   0
0   1   1
1   0   0
1   0   1
1   1   0
1   1   1

Я хочу встроенный логический блок или вентиль, и у меня есть пример вывода, как показано ниже

A   B   C   Output
0   0   0   0
0   0   1   1
0   1   0   1
0   1   1   1
1   0   0   1
1   0   1   1
1   1   0   1
1   1   1   1

Как это можно сделать в пандах

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Вам просто нужно оценить df.A | df.B | df.C.

df['OR_Gate'] = df.A | df.B | df.C

Примечание. Если значения в столбцах A, B, C являются строками 0 и 1, выполните одно из следующих действий:

# Method-1: 
#   Convert the strings into int and then evaluate OR_Gate: 
#   This changes the value-types in the columns A, B, C
df = df.astype('int')
df['OR_Gate'] = df.A | df.B | df.C
# Method-2: 
#   This will not change the original data type in columns A, B, C
#   But will correctly evaluate 'OR_Gate'.
df['OR_Gate'] = df.A.astype(int) | df.B.astype(int) | df.C.astype(int)
# Method-3: 
#   If you want your final output to be in boolean form.
df['OR_Gate'] = df.A.astype(bool) | df.B.astype(bool) | df.C.astype(bool)

Подробное решение

import pandas as pd

# Dummy data
A = [0]*4 + [1]*4
B = [0]*2 + [1]*2 + [0]*2 + [1]*2
C = [0, 1]*4
# Make Dataframe
df = pd.DataFrame({'A': A, 'B': B, 'C': C})
# Update 'OR_Gate' Output
df['OR_Gate'] = df.A | df.B | df.C
df

Выход :

   A  B  C  OR_Gate
0  0  0  0        0
1  0  0  1        1
2  0  1  0        1
3  0  1  1        1
4  1  0  0        1
5  1  0  1        1
6  1  1  0        1
7  1  1  1        1
0 голосов
/ 25 октября 2019

Может потребоваться , все значения соответствуют условию.

df = pd.DataFrame([[0,0,0],[0,0,1], [0,1,0], [0,0,0]], columns=['A', 'B', 'C'])
df['Output'] = df.eq(False).all(1).astype(int)

df

Out[1]: 
   A  B  C  Output
0  0  0  0       0
1  0  0  1       1
2  0  1  0       1
3  0  0  0       0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...