Я конвертирую код из R в Python и ищу некоторую помощь в замене нового столбца на основе других столбцов, используя dfply
синтаксис / трубопровод
В этом примере я хочу вычесть 2 из col1
, если col2
равно 'c', в противном случае добавьте 4
import pandas as pd
import numpy as np
from dfply import *
col1 = [1,2,3,4,5]
col2 = ['a', 'b', 'c', 'd', 'e']
df = pd.DataFrame(data = {'col1': col1, 'col2': col2})
в R я бы сделал:
df_new <- df %>%
mutate(newCol = ifelse(col2 == 'c', col1 - 2, col1 + 4))
но Python вроде бы не такой:
new_df = (df >>
mutate(newCol = np.where(X.col2 == 'c', X.col1 - 2, X.col1 + 4)))
Я получаю сообщение об ошибке "invalid __array_struct __"
Обратите внимание, что это прекрасно работает:
new_df = (df >>
mutate(newCol = X.col1 - 2))