Предполагая, что ваши имена столбцов (df.columns
) равны ['index','a','b','c']
, тогда нужные вам данные находятся в 3-м & amp; 4-я колонны. Если вы не знаете их имена при запуске вашего скрипта, вы можете это сделать
newdf = df[df.columns[2:4]] # Remember, Python is 0-offset! The "3rd" entry is at slot 2.
. Поскольку EMS указывает в свой ответ , df.ix
нарезает столбцы немного больше лаконично, но интерфейс среза .columns
может быть более естественным, поскольку он использует синтаксис индексирования / разрезания ванильного 1-D-файла python.
WARN: 'index'
является плохим именем для столбца DataFrame
, Эта же метка также используется для реального атрибута df.index
, массива Index
. Поэтому ваш столбец возвращается df['index']
, а реальный индекс DataFrame возвращается df.index
. Index
- это особый тип Series
, оптимизированный для поиска значений его элементов. Для df.index это поиск строк по их метке. Этот атрибут df.columns
также является массивом pd.Index
для поиска столбцов по их меткам.
Вы передаете их с синтаксисом, дублирующим синтаксис аргумента:
self.save_name_for(*args, **kwargs)
Обратите внимание, что вам не нужно проходить в self
; save_name_for
уже привязан.
Операторы *
и **
используются в двух разных ситуациях.
def save_name_for(self, *args, **kwargs):
используется для обозначения произвольного числа аргументов positional или keyword, соответственно. Следует помнить, что внутри функции args
будет кортеж, а kwargs
будет dict. args = (1, 2)
kwargs = {'last': 'Doe', 'first': 'John'}
self.save_name_for(*args, **kwargs)
*
и **
действуют как операторы распаковки . args
должен быть итерируемым, а kwargs
должен быть dict-like. Элементы в args
будут распакованы и отправлены функции как позиционные аргументы, а пары ключ / значение в kwargs
будут отправлены функции как аргументы ключевого слова. Таким образом, self.save_name_for(*args, **kwargs)
эквивалентно self.save_name_for(1, 2, last='Doe', first='John')
См. Также блог saltycrane для объяснения с примерами.