2016-05-23 81 views
-1
一行

我有一個像dateset:如何將功能只適用於

a b  c 
1 x1 c1 
2 x2 c2  
3 x3 c3 

,我想申請一個函數f只B列。

我不喜歡的東西:

d2 = d['b'].apply(f) 

但我已經導致像

a b 
1 xt 
2 xt  
3 xt 

而且我想柱C中,就像一個結果:

a b  c 
1 xt c1 
2 xt c2  
3 xt c3 

我該怎麼辦沒有合併第一個數據集?

回答

1

我想嘗試不使用apply,因爲它是慢,更好的是使用pandas API函數:

例如如果需要更換色譜柱到新的常數值:

df['b'] = 'xt' 
print (df) 
    a b c 
0 1 xt c1 
1 2 xt c2 
2 3 xt c3 

但如果apply是必要的:

def f(x): 
    return 'xt' 

df['b'] = df.b.apply(f) 
print (df) 
    a b c 
0 1 xt c1 
1 2 xt c2 
2 3 xt c3 

如果你需要新的DataFrame,第一次使用copy

d = df.copy() 

def f(x): 
    return 'xt' 

d['b'] = d.b.apply(f) 
print (d) 
    a b c 
0 1 xt c1 
1 2 xt c2 
2 3 xt c3 
+0

副本()工作,謝謝 –

+0

感謝您接受,祝您好運! – jezrael