Как присвоить значения столбцу с помощью мультииндексного фильтра? - PullRequest
1 голос
/ 18 июня 2019

Я не могу обновить значения в столбце при фильтрации с использованием мультииндекса.

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 голосов
/ 18 июня 2019

Я подозреваю, что Pandas выдает предупреждение SettingwithCopyWarning .Существует очень хорошая статья , которая объясняет риск выполнения «цепного присваивания».

Основная проблема заключается в том, что когда вы пишете:

features_complete_new_index.loc[true_positives_indexes,:]

вы не знаете, работает ли Pandas с исходными данными или их копией .

Поэтому при написании:

features_complete_new_index.loc[true_positives_indexes,:].ev_2 = True

Возможно, выприсвоение True копии вашего фрейма данных.

Решение состоит в том, чтобы сделать это в единственной операции loc :

features_complete_new_index.loc[true_positives_indexes,'ev_2'] = True

Этоочень хорошо объяснено в статье.

...