2016-12-07 39 views
3

這是關於here問題的後續處理: 如何使用函數修改數據幀?比方說,我想就值調用.upper()a使用函數修改熊貓數據幀

df = pd.DataFrame({'a':['london','newyork','berlin'], 
        'b':['uk','usa','germany'], 
        'c':[7,8,9]}) 

df1 = df[['a', 'b']] 

def doSomething(x): 
    return x.a 

print (df1.apply(doSomething, axis=1)) 
0  london 
1 newyork 
2  berlin 
dtype: object 

call `.upper()` on values in `a`: 
return 
0  LONDON 
1  NEWYORK 
2  BERLIN 
dtype: object 

回答

6

你可以調用函數a列:

def doSomething(x): 
    return x.upper() 

print (df1.a.apply(doSomething)) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

print (df1.a.apply(lambda x: x.upper())) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

而且它適用於:

def doSomething(x): 
    return x.a.upper() 

print (df1.apply(doSomething, axis=1)) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
dtype: object 

但更好的是使用str.upper它完美的作品與NaN值:

print (df1.a.str.upper()) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

如果需要添加新列:

df['c'] = df1.a.str.upper() 
print (df) 
     a  b  c 
0 london  uk LONDON 
1 newyork  usa NEWYORK 
2 berlin germany BERLIN 
+0

如何柱'C'添加到這個新修改的數據幀? – DevEx

+0

查看最佳解決方案,我編輯答案。 – jezrael

+0

謝謝。是否可以在'apply'解決方案中添加'c'? – DevEx