Pandas:使用带有条件的 df.loc 时出现 KeyError

问题描述 投票:0回答:1

使用以下程序选择 DataFrame 中 'Num' 中包含 numbers 的行。

import pandas as pd 
data = {'Num': [[1,2,100], [10,20,30], [1,2,30],[1,2,200],[4,0,9]],'Id':range(5)}
df = pd.DataFrame(data)
numbers = [1,2]
filtered_df = df.loc[all(n in df['Num'] for n in numbers)]
print(filtered_df)

我有以下错误:

raise KeyError(KeyError: 'True: boolean label can not be used without a boolean index'

我不明白这个错误的原因,因为如果我将 filtered_df 更改为:

filtered_df = df.loc[df['Num'].apply(lambda c : all(n in c for n in numbers))]

该程序运行良好。您能解释一下错误以及如何纠正第一个程序吗?

pandas dataframe indexing keyerror
1个回答
0
投票

all(n in df['Num'] for n in numbers)
将检查
numbers
中的所有数字是否都在 df['Num']
index
中,并输出单个
True
。然后尝试用它来索引,相当于
df.loc[True]
,这是没有意义的,因为你的索引中没有
True

© www.soinside.com 2019 - 2024. All rights reserved.