2017-03-09 181 views
2

应用功能想这是我的数据框多:使用大熊猫多级数据帧

States = pd.DataFrame({'Alaska' : [1, 2, 3, 4], 'Arizona': [5, 6, 7, 8]}, 
         index=pd.MultiIndex(levels=[['A', 'B'], ['x','y']], 
         labels=[[1,1,0,0],[1,0,1,0]])).T 

我想从这个数据帧中获得新的变数。

def scoring_algorithm(x): 
    return x[('A', 'x')] + 100 
States.apply(scoring_algorithm) 

但是,这会引发错误

KeyError: (('A', 'x'), 'occurred at index (B, y)')

我从我的列选择('A', 'x')不尽如人意的错误假设,但我无法找到如何使用此为任何资源应用功能。

注:我需要apply函数或类似的东西,因为最终的评分算法需要多个列作为apply函数的输入。

在此先感谢您的任何指导!

+1

谢谢你的好,可重复的例子! –

回答

1

您目前正在申请索引。

df.apply(fxn, axis='index') 

您需要应用到列:

df.apply(fxn) 

到等同。

df.apply(fxn, axis='columns') 

所以你:

States.apply(scoring_algorithm, axis='columns') 

,我也得到:

Alaska  104 
Arizona 108 
dtype: int64 
+0

太棒了!太棒了。谢谢! – nev