Как применять нарезку на пандах Серия строк

Я играю с пандами и пытаюсь применить нарезку строк на объекте Series of strings. Вместо того, чтобы нарезать струны, серия нарезается:

In [22]: s = p.Series(data=['abcdef']*20) In [23]: s.apply(lambda x:x[:2]) Out[24]: 0 abcdef 1 abcdef 

С другой стороны:

 In [25]: s.apply(lambda x:x+'qwerty') Out[25]: 0 abcdefqwerty 1 abcdefqwerty 2 abcdefqwerty ... 

Я получил его, чтобы работать, используя функцию карты вместо этого, но я думаю, что мне не хватает чего-то о том, как он должен работать.

Был бы очень признателен за разъяснение.

3 Solutions collect form web for “Как применять нарезку на пандах Серия строк”

сначала примените эту функцию к целой серии. Только если это не удается, он сопоставляет данную функцию каждому элементу. [:2] является допустимой функцией в ряду, + 'qwerty' видимому, нет, поэтому вы получаете неявное сопоставление с последним. Если вы всегда хотите сделать сопоставление, вы можете использовать s.map .

apply исходный код для ссылки:

  try: result = func(self) if not isinstance(result, Series): result = Series(result, index=self.index, name=self.name) return result except Exception: mapped = lib.map_infer(self.values, func) return Series(mapped, index=self.index, name=self.name) 

Ответ Уэса МакКинни немного устарел, но он поправился по своему желанию – теперь панды имеют эффективные методы обработки струн, включая нарезку:

 In [2]: s = Series(data=['abcdef']*20) In [3]: s.str[:2] Out[3]: 0 ab 1 ab 2 ab ... 

Вы на правильном пути:

 In [3]: s = Series(data=['abcdef']*20) In [4]: s Out[4]: 0 abcdef 1 abcdef 2 abcdef 3 abcdef 4 abcdef 5 abcdef 6 abcdef 7 abcdef 8 abcdef 9 abcdef 10 abcdef 11 abcdef 12 abcdef 13 abcdef 14 abcdef 15 abcdef 16 abcdef 17 abcdef 18 abcdef 19 abcdef In [5]: s.map(lambda x: x[:2]) Out[5]: 0 ab 1 ab 2 ab 3 ab 4 ab 5 ab 6 ab 7 ab 8 ab 9 ab 10 ab 11 ab 12 ab 13 ab 14 ab 15 ab 16 ab 17 ab 18 ab 19 ab 

Я бы очень хотел добавить кучу векторизованных, удобных для NA инструментов обработки строк в пандах ( см. Здесь ). Всегда оцените любую помощь в разработке.

  • Как ускорить LabelEncoder перекодировать категориальную переменную в целые числа
  • Как рассчитать разницу во времени по группам с помощью панд?
  • Как создать pandas DataFrame (с индексом или multiindex) из списка экземпляров namedtuple?
  • Круглые столбцы в кадре данных панд
  • Pandas / Numpy: как превратить данные столбца в разреженную матрицу
  • numpy - обновлять значения с помощью среза, учитывая значение массива
  • Pandas / Python: Как объединить два кадра данных без дубликатов?
  • Pandas - FillNa с другим столбцом
  •  
    Interesting Posts for Van-Lav

    Создание записи в хранилище данных приводит к зашифрованным свойствам при просмотре в браузере

    Установите Scrapy на OS X El Capitan

    Как использовать пользовательскую маркерную модель в Django Rest Framework

    Что произойдет, если вы сохраните вызов супер в переменной для будущего использования?

    Python: выход из python.exe после Popen?

    Установите MySQL-python в virtualenv на Windows 7

    Boost Python – ограничение количества аргументов при упаковке функции

    Когда планировщик App Engine использует новый поток вместо нового экземпляра?

    Как решить NameError: имя «threading» не определено в python 3.3

    Как я могу остановить свой скрипт python при запуске другого скрипта python?

    Как мутировать неоднородное свойство ndb?

    Подсвечник Matplotlib (внутридневной) – один большой блок

    Прогностическая способность атрибута для конкретной цели в Python с использованием выбора функции в Sklearn

    Получить следующий счетчик константы / свойства

    Есть ли какая-нибудь из этих четырехъядерных библиотек?

    Python - лучший язык программирования в мире.