【发布时间】:2020-02-16 12:16:15
【问题描述】:
我有一个数据框 'df',其中包含 'A'、'B' 列,如图所示。我想创建一个新列 'C' 并将其分配给函数 func() 的输出。但是,限制是只有那些行(在 "C" 中)被分配这样的值,列 "A" 条目匹配 "abc"强>。对于此类行,func() 的输入变量将是 'B' 列的相应条目。
例如,在附加的照片中,第 0 行和第 2 行的列 'A' 值为 'abc'。对于此类行,'C' 中的值应由 func() 使用列 'B' 中的值计算(在此大小写,"2222" 或 "4444")。
注意:变量 'var2'、'var3' 是在我的程序其他地方派生的一些值。我们可以在此处将它们视为常量进行讨论。
我当然可以使用“for 循环”来完成这项工作,但是,我想知道是否有任何有效的方法可以使用 pandas 或 numpy 来做到这一点。我尝试使用“.where”方法,但似乎 func() 将整个“B”列解释为其输入,而不是将“B”列的每个元素(即......“2222”或“4444”) .
def func(var1, var2, var3):
<something>
return(output)
import numpy as np
df['C'] = np.where(data['A'] == 'abc', func(data['B'], var2, var3), " ")
【问题讨论】:
标签: python pandas numpy dataframe conditional-statements