如何将函数仅应用于一行

时间:2016-05-23 12:35:48

标签: python pandas apply

我有一个类似的日期:

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 个答案:

答案 0 :(得分:1)

我认为您尝试不使用apply,因为它更慢,更好的是使用pandas API函数:

e.g。如果需要将列替换为新的常量值:

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