使用多索引过滤时,无法更新列上的值。
features_complete_new_index['ev_2'] = 1
features_complete_new_index.loc[true_positives_indexes,:].ev_2 = True
features_complete_new_index.loc[false_negatives_indexes,:].ev2 = False
features_complete_new_index.ev_2.value_counts()
输出
Out[20]:
1 8176700
Name: ev_2, dtype: int64
预期产量
1 7000000
True 1000000
False 17670000
答案 0 :(得分:0)
我怀疑Pandas正在向您发出 SettingwithCopyWarning 警告。有very good article解释了执行“链接分配”的风险。
核心问题是当您编写时:
features_complete_new_index.loc[true_positives_indexes,:]
您不知道Pandas是使用原始数据还是它的副本。
所以在写作时:
features_complete_new_index.loc[true_positives_indexes,:].ev_2 = True
您可能正在将True分配给数据框的副本。
解决方案是通过单次定位操作来实现:
features_complete_new_index.loc[true_positives_indexes,'ev_2'] = True
文章中对此有很好的解释。