Панды удаляют строки, значения которых совпадают с именем столбца - PullRequest
2 голосов
/ 07 октября 2019

У меня есть следующий фрейм данных, где Name, Marks, Grade - имена столбцов:

print (df)
    Name  Marks  Grade
0    Abc     70      A
1    Def     42      D
2    Ghi     54      D
3   Name  Marks  Grade
4    Jkl     31      F
5    Mno     76      B
6   Name  Marks  Grade
7    Pqr     B1      A
8    Stu     23      F
9    Vwx     90      A
10  Name  Marks  Grade
11    Yz     58      C

Я хочу удалить все те строки, значения которых совпадают с именами столбцов, чтобы получить следующий фрейм данных-

print (df)
   Name Marks Grade
0   Abc    70     A
1   Def    42     D
2   Ghi    54     D
4   Jkl    31     F
5   Mno    76     B
7   Pqr    B1     A
8   Stu    23     F
9   Vwx    90     A
11   Yz    58     C

Кто-нибудь может подсказать, как это можно сделать?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вы можете сравнить одно имя столбца, например, третье и фильтр, по boolean indexing:

c = df.columns[2]

df1 = df[df[c] != c]

Что работает так же, как:

df1 = df[df['Grade'] != 'Grade']

Если хотитесравнивать имена всех столбцов, это тоже возможно, только проверьте, все ли значения True с на строки по DataFrame.all:

df1 = df[(df != df.columns).all(axis=1)]
print (df1)
   Name Marks Grade
0   Abc    70     A
1   Def    42     D
2   Ghi    54     D
4   Jkl    31     F
5   Mno    76     B
7   Pqr    B1     A
8   Stu    23     F
9   Vwx    90     A
11   Yz    58     C
0 голосов
/ 07 октября 2019

Вы можете удалить строки, которые, например, имеют значение «Marks» в столбце «Marks», используя логическую маску и df.drop.

bool_mask = df['Marks'] != 'Marks' #Make boolean mask where rows with 'Marks' are False.
df = df.drop(bool_mask)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...