Файл 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