Как ввести изменяющееся количество столбцов в функцию расчета с использованием лямбды и применить их в кадре данных панды? - PullRequest
1 голос
/ 04 февраля 2020

Каждый месяц у меня есть новый источник данных с количеством столбцов, которые можно изменить.

Я хочу создать новый столбец в кадре данных с помощью функции:

def calcul(**kwargs):

    [...]

    return result

I создаст мой столбец так:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['B1']), axis =  1)

Но у меня тоже может быть этот случай:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['A3'], x['B1', x['B2']), axis =  1)

Я пытаюсь создать список аргументов в зависимости от данных и войти в список с помощью sys.stdout.write (), но он не работает

liste = ["x[\'A1\']", "x[\'A2\']", "x[\'B1\']"]

df['result'] = df.apply(lambda x: calcul(sys.stdout.write(", ".join(liste))), axis =  1)

1 Ответ

0 голосов
/ 04 февраля 2020

IIU C вы можете заменить:

df['result'] = df.apply(lambda x: calcul(x['A1'], x['A2'], x['B1']), axis =  1)

на:

cols = ['A1', 'A2', 'B1']
df['result'] = df.apply(lambda x: calcul(*[x[c] for c in cols]), axis=1)

Где cols - это ваш список столбцов, который изменяется.

* распаковывает список, поэтому он эквивалентен вашей исходной строке.

...