У меня есть фрейм данных, dfCM, который был создан из другого фрейма данных, dfdict [dfCM], а затем обработан следующим образом:
- ненужные строки были удалены.
- не нужны столбцы были удалены
- добавлены новые столбцы.
Теперь мне нужно добавить обратно удаленные столбцы из dfdict [dfCM] в dfCM. Обратите внимание, что dfdict [dfCM] сохраняется в словаре фреймов данных.
Раньше я запускал аналогичную команду слияния в своем коде несколько раз, но теперь я получаю сообщение об ошибке: DataFrame 'objects являются изменяемыми, поэтому их нельзя хешировать
#add back deleted dfCM columns
dfCM = pd.merge(dfCM, dfdict[dfCM], on=['ClaimID'], how = 'left', suffixes = ('', '_cm'))
#remove duplicate columns
dfCM.filter(like='_cm',axis=1)
Вот как выглядит dfCM (с большим количеством столбцов и строк):
index ClaimID MeasCode MeasAppType
0 MCE-2019-02-02-068-01 CLA48 AR
1 MCE-2019-02-066-01 CLA48 AR
2 MCE-2019-02-066-01B CLA48 AR
3 MCE-2019-02-066-02 CLB50 AR
4 MCE-2019-02-066-02B CLB50 AR
5 MCE-2019-02-067-01 CLB51 AR
Скриншот dfdict ниже:
Так выглядит dfdict
А вот как выглядит dfdict [dfCM] (с гораздо большим количеством строк и столбцов):
index ClaimID MeasAppType MeasDesc
0 BAY-2019_C&S_19Q1 AR Attic insulation; Domestic hot water heater/boiler;
1 BAY-2019_COM_19Q1 AR Attic insulation; Domestic hot water heater/boiler;
2 BAY-2019_Com_Q2 NR This record is not a project
3 BAY-2019_CS_Q2 NR This record is not a project
4 BAY-2019_EM&V_19Q1 AR Attic insulation; Domestic hot water heater/boiler;
Мне удалось выполнить слияние, изменив имена всех столбцов в dfdict [dfCM], как показано ниже. Но это не идеально, так как теперь я не могу различать повторяющиеся столбцы и уникальные столбцы, добавленные в dfCM, и, следовательно, не могу удалить дубликаты.
#add back deleted dfCM columns
dfdict['dfCM'] = dfdict['dfCM'].add_suffix('_cm') #identified columns from dfCL
dfCM = pd.merge(dfCM, dfdict['dfCM'], left_on='ClaimID', right_on='ClaimID_cm', how = 'left', suffixes = ('', '_cm'))
Есть ли лучший способ решить эту проблему? Спасибо