如何使用多索引过滤器将值分配给列?

时间:2019-06-18 09:57:25

标签: python pandas multi-index

使用多索引过滤时,无法更新列上的值。

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

1 个答案:

答案 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

文章中对此有很好的解释。