Переименовать последний столбец во фрейме данных, переданном в цепочке методов

#python #pandas #dataframe

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

Вопрос:

Как я могу переименовать последний столбец во фрейме данных, который был передан в цепочке методов? Подумайте о следующем примере (реальный вариант использования более сложный). Как функция rename может ссылаться на обрабатываемый ею фрейм данных (который отличается от фрейма данных «таблица»? Есть ли что-то вроде следующего? К сожалению, «self» не существует.

 result = table.iloc[:,2:-1].rename(columns={self.columns[-1]: "Text"})
  

Ответ №1:

Использовать pipe() :

 result = table.iloc[:,2:-1].pipe(lambda df: df.rename(columns={df.columns[-1]: "Text"}))
  

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

1. @Wen-Ben это не должно быть моей ошибкой. Вы пытаетесь выполнять действия в цепочке, вы должны знать риск (или вы предполагали, что это будет не так).

2. Вы, ребята, такие быстрые, что мне приходится ждать еще 4 минуты, пока я не смогу принять ответ 🙂

3. @IanS если iloc часть создает фрейм данных без столбцов, часть переименования не будет работать. Но я отвечаю, что это инженерный компромисс, если вы хотите сделать это в цепочке.

4. @adrtam Я согласен с вами, но мне кажется, что Вен-Бен придерживается другой точки зрения (и на данный момент я думаю, что он неправ, но это зависит от того, как вы интерпретируете исходный вопрос).

Ответ №2:

Я думаю, что вы можете просто сделать следующее:

 result = table.iloc[:,2:-1]
result.columns = result.columns[:-1]   ["Text"]
  

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

1. Да, но я хочу сохранить цепочку.