尝试有条件地对数据帧中的某些元素求和,我得到KeyError:“ [Float64Index(...)]都不在[列]中”

时间:2019-10-15 10:14:50

标签: python pandas indexing keyerror

我有一个数据框, df

在循环中,每次迭代我都会创建此数据框的副本 temp_df 。几乎是一样的,只是稍有不同。

我有一个分类模型,模型。函数 classification_results 返回一个0和1的数组,它们告诉我 temp_df

的每个元素的预测类

我要获取所有 temp_df 元素,这些元素具有预测的类= 1,并将这些值的总和存储在其他列中,用于这些确切的元素。

整个代码是这样的:

for c in range(number_of_iterations):
    temp_df = df.copy()
    temp_df["my_column"] = df.apply(lambda row: my_function(row, c), axis=1)
    results[c] = temp_df[classification_results(model, temp_df)].another_column.sum()

位置:

classification_results(model, temp_df)

返回类似的内容

array([1., 0., 1., 1., 0., 1., 0.])

所以我希望:

temp_df[classification_results(model, temp_df)]

返回一个仅包含temp_df中几个元素的df,就像我做的事情一样:

temp_df[temp_df["a_column"] == Something]

相反,运行我的代码可获得:

KeyError: "None of [Float64Index([1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
dtype='float64', length=761)] are in the [columns]"

我找不到答案。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

在@Aryerez的评论之后,我替换了

temp_df[classification_results(model, temp_df)]

使用

temp_df[classification_results(model, temp_df) == 1]

(这也很好:)

temp_df[classification_results(model, temp_df).astype(bool)]

因为您不能使用浮点数组(甚至不使用Int数组,这让我感到惊讶)来过滤DF中的数据