Генерирование некоторых фиктивных данных в соответствии с требованиями OP
import pandas as pd
a = [['Classification','Clustering','Top'],
[8,7,5],
[8,1333,3],
[50,50,1],
[50,3363,2],
[50,50,3],
[83,50,4],
[83,83,5]]
df = pd.DataFrame(a[1:], columns=a[0])
print(df)
Classification Clustering Top
0 8 7 5
1 8 1333 3
2 50 50 1
3 50 3363 2
4 50 50 3
5 83 50 4
6 83 83 5
Выбор столбцов по частичному имени столбца (возвращает 2 столбца) ( ссылка используется )
df = df[df.columns[df.columns.str.startswith('Cl')]]
print(df)
Classification Clustering
0 8 7
1 8 1333
2 50 50
3 50 3363
4 50 50
5 83 50
6 83 83
Наконец, используйте pandas .nunique(axis=1)
метод , чтобы вернуть количество различных наблюдений по столбцам (в фиктивных данных, если оба столбца содержат одно и то же значение, возвращается 1).Затем сравните это с целым числом 1. Если эти 2 значения равны (для конкретной строки), то вы знаете, что число уникальных записей для этой строки равно 1, а логическая маска из ...eq(..)
возвращает True
...Другими словами, эта строка содержит одинаковое значение для всех столбцов.Используя срез панд, только True
строки возвращаются df = df[...]
, что задается в вопросе - используется ссылка .
print(df[df.nunique(axis=1).eq(1)])
Classification Clustering
2 50 50
4 50 50
6 83 83
Для использования min
и max
, см. эту ссылку - если минимальное и максимальное значения в каждой строке всех столбцов равны, то элементы идентичны по строкам, как требуется ( полезное сообщение об использовании apply
по столбцам )
print(df[df.apply(lambda x: min(x)==max(x), 1)])
Classification Clustering
2 50 50
4 50 50
6 83 83