在多级DataFrame上使用pandas应用函数

时间:2017-03-09 20:14:58

标签: python pandas dataframe

假设这是我的多级DataFrame:

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

我正在尝试从此DataFrame中派生新变量。

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

答案 0 :(得分:1)

您目前正在申请索引。

df.apply(fxn)

相当于:

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

您需要申请列。

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

所以对你:

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

我得到了:

Alaska     104
Arizona    108
dtype: int64