вставить новый столбец в dataframe, который вычисляется из более чем 1 переменной - PullRequest
1 голос
/ 10 июля 2019

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

Это работает для меня:

df['new column'] = [ foo(x) for x in df['X']]

Теперь, если мы хотим основать вычисления для> 1 столбца

df['new column'] = [ foo(x, y, z) for x, y, z in df['X', 'Y', 'Z']]

Это то, что я пытался, но он не принимает синтаксис. Я мог бы это сделать, но я хотел бы включить вычисления.

Может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Вы можете напрямую получить доступ к базовому массиву numpy:

df['new column'] = [foo(x, y, z) for x, y, z in df[['X', 'Y', 'Z']].values]

Осторожно, это может быть то, что вы хотите (и, вероятно, быстрее, чем iterrows или применяются), но у вас нет доступа к индексу имен столбцов из массива numpy.

1 голос
/ 10 июля 2019

Используйте DataFrame.apply с axis=1 для процессов на строки и лямбда-функцию для имен столбцов прохода:

df['new column'] = df.apply(lambda x: foo(x['X'], x['Y'], x['Z']), axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...