Пропустить параметры конструктора для базового конструктора неявно [дублировать]

Предполагая, что ваши имена столбцов (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 для поиска столбцов по их меткам.

4
задан Martijn Pieters 19 May 2014 в 18:48
поделиться

2 ответа

Вы передаете их с синтаксисом, дублирующим синтаксис аргумента:

self.save_name_for(*args, **kwargs)

Обратите внимание, что вам не нужно проходить в self; save_name_for уже привязан.

5
ответ дан Martijn Pieters 3 September 2018 в 08:26
поделиться

Операторы * и ** используются в двух разных ситуациях.

  1. Когда используется как часть определения функции,
    def save_name_for(self, *args, **kwargs):
    
    используется для обозначения произвольного числа аргументов positional или keyword, соответственно. Следует помнить, что внутри функции args будет кортеж, а kwargs будет dict.
  2. Когда используется как часть вызова функции,
    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 для объяснения с примерами.

7
ответ дан unutbu 3 September 2018 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: