我想在数据框中创建一个新列,如果列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']]
这是矢量化的吗?在熊猫中有不同的“正确”方法吗?矢量化函数的作用会有何不同?
答案 0 :(得分:1)
试
df["new"]=np.nan
df["new"][df["C"]=='a']=df["A"]
df["new"][df["C"]=='b']=df["B"]