【发布时间】:2020-07-14 11:17:07
【问题描述】:
我有一个数据帧 dfCM,它是从另一个数据帧 dfdict[dfCM] 创建的,然后按如下方式处理:
- 删除了不需要的行。
- 删除了不需要的列
- 添加了新列。
我现在需要将删除的列从 dfdict[dfCM] 添加回 dfCM。请注意,dfdict[dfCM] 保存在数据帧字典中。
我之前在我的代码中多次运行类似的合并命令,但现在我收到错误:DataFrame' 对象是可变的,因此它们不能被散列
#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[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'))
有没有更好的方法来解决这个问题?谢谢
【问题讨论】:
-
dfdict是字典吗?如果是这样,并且dfCM是一个数据框,那么你不能将它用作字典键,因为它是可变的,正如错误告诉你的那样 -
我尝试创建一个新的 df,a = dfdict[dfCM],然后使用 a 而不是 dfdict[dfCM],但得到了同样的错误。你对如何解决这个问题有什么建议吗?
-
a = dfdict[dfCM]是否会出现该错误?
标签: python pandas dataframe merge