#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. Идеально! Инновационное решение.