0
我想創建一個等於列A的數據框(如果列C =「a」)和列B(如果列C =「b」)的新列。我已經實現了這一點:根據其他列上的條件選擇列,vectorized,pandas
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']]
這是量化的?在熊貓中做這件事有沒有不同的「正確」方式?矢量化函數會有什麼不同?
應用僅僅是一個循環,並且應儘量避免使用,您的解決方案是好的,也有做你想要什麼的許多方面。它取決於數據的大小,你的示例代碼可以簡化:'df.loc [df ['C'] =='a','new'] = df ['A']'同樣適用於其他條件 – EdChum 2014-09-19 13:54:29