Pandas `.assign` нескольким столбцам из одной функцииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas `.assign` нескольким столбцам из одной функции

Сообщение Anonymous »


У меня есть фрейм данных Pandas, который содержит один столбец val, а также функцию func, которая принимает значение и выдает список некоторой фиксированной длины ( скажем 4). У меня также есть список cols из 4 строк. Я хотел бы применить func к каждой ячейке и добавить 4 новых столбца, помеченных в соответствии с моим списком.

Похоже, что это работает примерно так:

импортировать панд как pd df = pd.DataFrame({'val': [1, 2, 4, 18, 9, 1]}) cols = ["X", "Y", "Z", "привет"] func = лямбда x: [2**x, str(x), x+1, "мир"] df[cols] = df['val'].apply(lambda val: pd.Series(func(val))) Поскольку я вижу, что все рекомендуют не использовать apply, я хотел попробовать сделать это с помощью assign. Я попытался назначить вывод func временному столбцу tmp, а затем извлечь отдельные значения одно за другим следующим образом:

импортировать панд как pd df = pd.DataFrame({'val': [1, 2, 4, 18, 9, 1]}) cols = ["X", "Y", "Z", "привет"] func = лямбда x: [2**x, str(x), x+1, "мир"] kwargs = {имя: (лямбда x: x.tmp[idx]) для idx, имя в перечислении (столбцы)} df[cols] = df.assign(tmp=lambda x: pd.Series(func(x.val)), **kwargs) Но это вызывает какую-то ошибку, которую я не знаю, как интерпретировать ValueError: Столбцы должны быть той же длины, что и ключ. Обратите внимание, что в документации к .assign [1] указано, что такой тип ссылки на себя разрешен, см. последний пример.

[1] https://pandas.pydata.org/docs/referenc ... ssign.html

РЕДАКТИРОВАТЬ: Для пояснения: в моем реальном приложении вызов func достаточно затратен, и я не хочу вызывать его четыре раза для каждой строки. Его также нелегко разделить на четыре подкомпонента, как в моем примере.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Группировать по столбцам и распределять значения по нескольким столбцам на основе значения [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Поиск pandas по нескольким столбцам возвращает один столбец, если совпадает
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Доступ к нескольким столбцам в Pandas (PYTHON)
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Доступ к нескольким столбцам в Pandas (PYTHON)
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Доступ к нескольким столбцам в Pandas (PYTHON)
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»