Удаление столбцов с повторяющимися значениями

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть фрейм данных с 2415 столбцами, и я хочу удалить последовательные повторяющиеся столбцы. То есть, если столбец 1 и столбец 2 имеют одинаковые значения, я хочу удалить столбец 2.

Я написал приведенный ниже код, но, похоже, он не работает:

 for i in (0,len(df.columns)-1):
    if (df[i].tolist() == df[i 1].tolist()):
        df=df.drop([i 1], axis=1)
    else:
        df=df
  

Комментарии:

1. Если col1 дублируется с col10, вы удалите col10 ?

2. @BEN_YO Нет, я удалю столбец 10, только если он совпадает со столбцом 9

3. ok обновлено ~ 🙂

Ответ №1:

Вам нужно выбрать имя столбца из индекса.Попробуйте это.

 columns = df.columns
drops = []
for i in (0,len(df.columns)-1):
    if (df[columns[i]].tolist() == df[columns[i 1]].tolist()):
        drops.append(columns[i])
df = df.drop(drops,axis=1)
  

Ответ №2:

Давайте попробуем shift

 df.loc[:,~df.eq(df.astype(object).shift(axis=1)).all()]
  

Комментарии:

1. Если у вашего df есть 1 миллион rows..do вы думаете, transpose что df — лучшее решение!. Также он хочет удалить последовательные повторяющиеся столбцы, а не все повторяющиеся столбцы.

2. Идеально! Инновационное решение.