通过函数运行df时的KeyError

时间:2017-01-12 10:29:03

标签: python pandas numpy

我正在尝试将以下函数应用于数据框并仅返回符合条件的行,但会获得KeyError。我做错了什么?

N = 100

np.random.seed(0)

df = pd.DataFrame(
    {'X':np.random.uniform(-3,10,N),
     'Y':np.random.uniform(-3,10,N),
     'Z':np.random.uniform(-3,10,N),
    })

def func_sec(df):
    for i in range(len(df)):
        for k in range( i+1, len(df)+1 ):
            df_sum = df[i:k].sum()
            m = (df_sum>2).all() & (df_sum.sum()>10)
            return df[m]

func_sec(df)

2 个答案:

答案 0 :(得分:1)

对于数据框df,您可以按列选择,例如在你的情况下'X':

df['X']

或切片行

df[0:10]

如果您尝试使用df[0]df[True]之类的无效内容,则会出现关键错误。

答案 1 :(得分:1)

与其他人一样,由于df [m],关键错误被抛弃。您的列名不是布尔值,它们是'X','Y','Z'。在the pandas documentation底部的某处有一些关于布尔索引的信息,所以我建议你查看它。

长话短说,你做不到df[True],但你可以df[df['X'] > 10]本身。