【发布时间】:2021-07-06 19:57:09
【问题描述】:
我正在尝试将自定义函数应用于将返回 3 个现有列的 3 个值的列。但我只需要对按掩码过滤的行执行此操作。
所以,例如我有一个函数
def f(x):
return pd.Series(["1", "2", "3"])
我有一个数据框
pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2,3],'X':[1,10,100]})
因此,任务是仅在 df['X']==10 时将函数 f() 应用于数据帧,并相应地使用函数更新 df[['A','B','C']] 中的值返回。
我期望看到的:
A B C X
0 1 1 1 1
1 "1" "2" "3" 10
2 3 3 3 100
到目前为止我做了什么:
mask = df['X']==10
df[['A','B','C']] = np.where(mask, df['X'].apply(f), df[['A','B','C']] ))
但是我收到了关于 operands could not be broadcast together with shapes.. 的错误消息。
感谢任何帮助。
【问题讨论】:
-
您能否用您的示例发布所需的解决方案?