根据其他列,矢量化,pandas上的条件选择列

时间:2014-09-19 13:29:45

标签: python pandas

我想在数据框中创建一个新列,如果列C ='a'则等于列A,如果列C ='b',则创建列B.我实现了这个:

def f(row):
    if row['C'] = 'a':
        return row['A']
    elif row['C'] = 'b':
        return row['B']
    return np.nan

df['new'] = df.apply(f, axis=1)

我感觉好像代码运行缓慢。 The answer here解释说这不是矢量化的。

可替换地:

df.ix[df[C]=='a',df['new']] = df.ix[df[C]=='a',df['A']]
df.ix[df[C]=='b',df['new']] = df.ix[df[C]=='b',df['B']]

这是矢量化的吗?在熊猫中有不同的“正确”方法吗?矢量化函数的作用会有何不同?

1 个答案:

答案 0 :(得分:1)

df["new"]=np.nan
df["new"][df["C"]=='a']=df["A"]
df["new"][df["C"]=='b']=df["B"]