检查多个列的值是否相同(python)

时间:2019-02-12 10:01:00

标签: python pandas similarity

我有一个binairy数据框,我想检查特定行中的所有值是否都具有值1。所以例如 在数据框下方。由于第0行和第2行在col1到col3中都包含值1,因此结果应为1,如果不是,则应为0。

import pandas as pd
d = {'col1': [1, 0,1,0], 'col2': [1, 0,1, 1], 'col3': [1,0,1,1], 'outcome': [1,0,1,0]}
df = pd.DataFrame(data=d)

由于我自己的数据框更大,因此我正在寻找一种比以下方法更优雅的方法,有什么想法吗?

def similar(x):
    if x['col1'] == 1 and x['col2'] == 1 and x['col3'] == 1:
        return 1
    else:
        ''
df['outcome'] = df.apply(similar, axis=1)

3 个答案:

答案 0 :(得分:5)

all的经典案例。

iloc可以无视您当前的结果栏,如果您没有,则可以使用df == 1。)

df['outcome'] = (df.iloc[:,:-1] == 1).all(1).astype(int) 


    col1    col2    col3    outcome
0   1        1      1           1
1   0        0      0           0
2   1        1      1           1
3   0        1      1           0

答案 1 :(得分:1)

尝试以下方法:

-m PEM

答案 2 :(得分:0)

这是更通用的,也适用于任何其他值。只需将第二个== 1替换为== <your value>

df['outcome'] = 0
df.loc[df.loc[(df.iloc[:,:-1].nunique(axis=1) == 1) \
    & (df.iloc[:,:-1] == 1).all(axis=1)].index, 'outcome'] = 1