Не удается выполнить переиндексацию с дублирующейся оси при поднаборе

У меня есть следующий кадр данных:

print(df)

 Col    Col     Col  Name
  A      B       C   Alex
  B      B       C   Jack
  B      A       A   Mark

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

 Col    Col     Col  Name
  A      B       C   Alex
  B      A       A   Mark

Я старался:

final_df = df["Col"] == "A", но выдает "ValueError: невозможно переиндексировать с дублирующейся оси"


person Alessandro Ceccarelli    schedule 28.03.2018    source источник


Ответы (1)


У вас есть проблемы с дублированием имен столбцов, поэтому, если выбрать df["Col"], вы получите все столбцы с именем Col.

Возможное решение — сравнить все столбцы с any. для проверки хотя бы одного True в строке:

df = df[(df == 'A').any(1)]
print (df)
  Col Col Col
0   A   B   C
2   B   A   A

Подробности:

print ((df == 'A'))
     Col    Col    Col
0   True  False  False
1  False  False  False
2  False   True   True

print ((df == 'A').any(1))
0     True
1    False
2     True
dtype: bool
person jezrael    schedule 28.03.2018