Python 通过函数运行df时出现KeyError

Python 通过函数运行df时出现KeyError,python,pandas,numpy,Python,Pandas,Numpy,我试图将下面的函数应用于数据帧,只返回符合条件的行,但得到一个keyrerror。我做错了什么 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

我试图将下面的函数应用于数据帧,只返回符合条件的行,但得到一个keyrerror。我做错了什么

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)

对于数据帧
df
,您可以按列选择,例如在您的案例中的“X”:

df['X']
或者切片一些行

df[0:10]

如果您尝试一些无效的操作,如
df[0]
df[True]
,您将得到一个关键错误。

对于数据帧
df
,您可以按列选择,例如,在您的情况下选择“X”:

df['X']
或者切片一些行

df[0:10]

如果您尝试了一些无效的操作,如
df[0]
df[True]
,您将得到一个键错误。

正如其他人所指出的,键错误是由于df[m]而抛出的。您的列名不是布尔值,而是“X”、“Y”、“Z”。底部的某个地方有一些关于布尔索引的信息,所以我建议您查看一下


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

正如其他人所指出的,关键错误是因为df[m]而抛出的。您的列名不是布尔值,而是“X”、“Y”、“Z”。底部的某个地方有一些关于布尔索引的信息,所以我建议您查看一下


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

什么是
m=(df_sum>2)。all()&(df_sum.sum()>10)
应该做什么?这里
m
是一个布尔值,你的
df
没有布尔值作为键,但是
X
Y
,和
Z
。我只想返回数据帧中符合条件的行。我尝试将for循环放在一个函数中,以便能够同时运行多个df。如果
m=(df_sum>2)。all()&(df_sum.sum()>10)
应该做什么?这里
m
是一个布尔值,您的
df
没有布尔值作为键,而是
X
Y
Z
。我只想返回数据框中符合条件的行。我尝试将for循环放在一个函数中,以便能够同时运行多个df。但无法让它工作