2016-05-23 50 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