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