Как получить уникальное значение строки и вернуть логический результат в python pandas? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть датафрейм:

Table     A    B    C    
Round     0.2  0    1     
Triangle  3    3    3     
Penta     1    1    1     

Я хочу получить результат, как показано ниже:

Что означает, что если уникальное значение для столбцов от A до C приводит только к одному значению, то возвращается false, если более одного возвращает true. В заключение, если значение для столбца A равно B и равно C, вернуть false.

Table     A    B    C    Result
Round     0.2  0    1     True
Triangle  3    3    3     False
Penta     1    1    1     False

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете сравнить последние 3 столбца по последнему столбцу с не равным ne (!=), а затем добавить DataFrame.any для проверки хотя бы одного True по строкам:

print (df)
      Table    A  B  C  Result
0     Round  0.2  0  1    True
1  Triangle  3.0  3  3   False
2     Penta  1.0  1  1   False

df['Result'] = df.iloc[:, -3:].ne(df.iloc[:, -1], axis=0).any(axis=1)
print (df)
      Table    A  B  C  Result
0     Round  0.2  0  1    True
1  Triangle  3.0  3  3   False
2     Penta  1.0  1  1   False

Detail

print (df.iloc[:, -3:].ne(df.iloc[:, -1], axis=0))
       A      B      C
0   True   True  False
1  False  False  False
2  False  False  False

Если первый столбец является индексным, решение упрощается и возможно сравнить все столбцы с любым столбцом:

df['Result'] = df.ne(df.iloc[:, -1], axis=0).any(axis=1)

print (df)
            A  B  C  Result
Table                      
Round     0.2  0  1    True
Triangle  3.0  3  3   False
Penta     1.0  1  1   False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...