Использование понимания списка при создании конвейера pandas выдает объект функции, а не повторяемую ошибкуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование понимания списка при создании конвейера pandas выдает объект функции, а не повторяемую ошибку

Сообщение Anonymous »

Мне нужно создать фрейм данных Pandas из файла csv с помощью конвейера.
Файл src csv может содержать любое количество столбцов с заголовком/именем, содержащим строку «SLA». Пример данных ниже:
Изображение

При создании конвейер pandas мне нужно извлечь и сохранить только строку до первого разделителя ('|') для всех столбцов SLA.
Например, для >ID=1, SLA1 в csv содержит значение '24h|0h|13h', и мне придется хранить только 24h в кадре данных (аналогично для других столбцов SLA)
Мой код выглядит следующим образом:

Код: Выделить всё

import pandas as pd

def get_sla_cols(df):
return [col for col in df.columns if 'SLA' in col]

def split(df, cols, split_str):
for col in cols:
df[col] = df[col].str.split(split_str, expand=True, n=1)[0]
return df

csv_path = r"C:\Users\daryl\Downloads\svc.csv"
svc_df = (pd.read_csv(csv_path)
.pipe(split, lambda x: x.pipe(get_sla_cols), '|'))

Я получаю следующую ошибку:
Изображение

Но если я побегу:

Код: Выделить всё

print(pd.read_csv(csv_path).pipe(lambda x: x.pipe(get_sla_cols)))
Я получаю следующий результат, как и ожидалось:
[img]https://i .sstatic.net/bMwVMuUr.png[/img]

Поскольку лямбда-код x: x.pipe(get_sla_cols) генерирует список имен столбцов, почему функция Split( df, cols, Split_str) выдает ошибку, которую невозможно перебрать по списку столбцов в цикле for? (см. снимок экрана с ошибкой).
Примечание. Если я заменю лямбду x: x.pipe(get_sla_cols) жестко запрограммированным списком, скажите ['SLA1', 'SLA2', 'SLA3', 'SLA4' , 'SLA5'] код (функция Split()) не выдает ошибок и работает должным образом.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ion-object
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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