我有一个数据框, 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]"
我找不到答案。我在做什么错了?
答案 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中的数据