У меня большой фрейм данных, я снял базу данных ODBC.Dataframe имеет несколько столбцов;Я пытаюсь изменить значения одного столбца, отфильтровывая два других.Сначала я фильтрую свой dataframe data_prem по обоим условиям, что дает мне правильные строки:
data_prem[(data_prem['PRODUCT_NAME']=='ŽZ08') & (data_prem['BENEFIT'].str.contains('19.08.16'))]
Затем я использую функцию замены в выделении, чтобы изменить значение 'M' на значение 'H':
data_prem[(data_prem['PRODUCT_NAME']=='ŽZ08') & (data_prem['BENEFIT'].str.contains('19.08.16'))]['Reinsurer'].replace(to_replace='M',value='H',inplace=True,regex=True)
Python предупреждает меня, что я пытаюсь изменить копию кадра данных, хотя я явно ссылаюсь на исходный кадр данных (я публикую изображение, чтобы вы могли видеть мои результаты).
фильтрация данных кадра
Я также попытался использовать функцию .loc следующим образом:
data_prem.loc[((data_prem['PRODUCT_NAME']=='ŽZ08') & (data_prem['BENEFIT'].str.contains('19.08.16'))),'Reinsurer'] = 'H'
, которая изменила все строки, соответствующие второму условию (str.contains...), но это не применимо к первому условию.Я получил замены в столбце «Перестраховщик» для других значений «PRODUCT_NAME».
В течение некоторого времени я искал в Интернете ответ на этот вопрос.Я видел некоторые упоминания об ошибке в библиотеке панд, не уверен, что именно об этом они и говорили.
Я был бы признателен за любые ваши мнения, также были бы интересны альтернативные способы решения этой проблемы.проблема.Я заполнил столбец «Reinsurer» функцией карты с «PRODUCT_NAME» в качестве входных данных (имел словарь, который соединил все значения «PRODUCT_NAME» со значениями «Reinsurer»).