我正在将代码从 R 转换为 Python,并正在寻找一些帮助,以使用dfply
语法/管道根据其他列改变新列
在这个例子中,我想从col1
if col2
is 'c' 中减去 2,否则加 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})
在 RI 会做:
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)))
我收到“无效的 __array_struct__”错误
请注意,这可以正常工作:
new_df = (df >>
mutate(newCol = X.col1 - 2))