2016-12-07 73 views
1

如何在熊猫数据框中使用函数。例如:如何在熊猫数据框中使用函数

a  | b 
london | uk 
newyork | usa 
berlin | germany 

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

def doSomething(df1): 
    return df1 

doSomething()将返回两列ab,但我怎么回报说只有a

def doSomething(df1): 
    return df1.a 

df1.applymap(doSomething) 

AttributeError: ("'str' object has no attribute 'a'", u'occurred at index a') 
+1

'DF1 [ '一']'不工作? – MMF

+0

'applymap'在数据帧的每个*元素*上调用函数 –

+0

@MMF否,它不会。我得到了'TypeError:'('字符串索引必须是整数,而不是str',u'发生在索引a')' – DevEx

回答

1

您可以使用:

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

print (df) 
df1 = df[['a', 'b']] 

def doSomething(x): 
    return x.a 

#function works with DataFrame 
print (doSomething(df1)) 
0  london 
1 newyork 
2  berlin 
Name: a, dtype: object 

#function works with Series, columns are transformed to index of Series 
#return for each row value of Series with index a which is transformed to column in output df 
print (df1.apply(doSomething, axis=1)) 
0  london 
1 newyork 
2  berlin 
dtype: object 

如果需要applymap它的df每个元素的作品:

def doSomething(x): 
    return x + '___' 

#function works with element 
print (df1.applymap(doSomething)) 
      a   b 
0 london___  uk___ 
1 newyork___  usa___ 
2 berlin___ germany___ 
1
df1 = df[['a', 'b']] 

def doSomething(df): 
df2 = df['a'] 
return df2 

df3 = df1.apply(doSomething, axis=1) 
df3 = pd.DataFrame(df3).rename(columns={0: 'a'})