python - 熊猫合并导致数据进入错误的列
问题描述
我有两个数据框:
df1:
ID CODE CD1 CD2
0 11526.0 1A NWZ
1 11527.0 1C NWZ
df2
CD_Code CID_CODE OC_NME OC_CDE
0 Mal3 11529 6A Main Area
1 Mal2 11526 6B Side Area
我正在尝试将这些数据框合并到df1['ID CODE']
和上df2['CID_CODE']
。我想将 df1 附加到 df2 并在匹配时输入值。如果没有匹配,NaN 很好。
所以,考虑到这个逻辑,我写了一个合并:
df1_plus_df2 = pd.merge(df2, df1, how="left", left_on=['CID_CODE'], right_on=['ID CODE'])
现在,生成的合并几乎正是我所需要的。
我得到了这些值,但它们正在覆盖现有的列。df1_plus_df2:
CD_Code CID_CODE OC_NME OC_CDE ID CODE CD1 CD2
0 Mal3 11529 6A Main Area NaN NaN NaN
1 Mal2 11526 11526.0 1A NaN NaN NaN
如果您在 中看到df1_plus_df2[1]
,则这些值已覆盖前 2 列中的值。我也没有从 df1 得到第三列来结转。
总的来说,这里奇怪的是我不明白为什么要附加列,但是这些值会覆盖现有的 df2 值。
这是我需要的输出,我不确定我做错了什么没有得到它:df1_plus_df2:
CD_Code CID_CODE OC_NME OC_CDE ID CODE CD1 CD2
0 Mal3 11529 6A Main Area NaN NaN NaN
1 Mal2 11526 6B Side Area 11526.0 1A NWZ
我真的很感激一些帮助。谢谢!
解决方案
您要合并的列是什么?CID_CODE
并且ID CODE
具有相同的值 11526。如果您尝试附加这两个数据帧,它将无法知道如何合并它们,因为没有指定条件。
请更清楚地解释您要合并的内容。
编辑。
我运行你的代码,这就是我所看到的。
df1 = pd.DataFrame({"ID CODE": [11526.0, 11527.0], "CD1" : ["1A", "1C"], "CD2": ["NWZ", "NWZ"]})
df2 = pd.DataFrame({"CD_Code": ["Mal3", "Mal2"], "CID_CODE": [11529, 11526], "OC_NME": ["6A", "6B"], "OC_CDE": ["Main Area", "Side Area"]})
df3 = pd.merge(df2, df1, left_on=['CID_CODE'], right_on=['ID CODE'], how='left')
输出:
CD_Code CID_CODE OC_NME OC_CDE ID CODE CD1 CD2
0 Mal3 11529 6A Main Area NaN NaN NaN
1 Mal2 11526 6B Side Area 11526.0 1A NWZ
你在合并之前做其他事情吗?你用的是什么熊猫版本?
推荐阅读
- xml - Powershell 错误无法转换 System.Xml.XmlNamespaceManage
- c - 错误:取消引用指向不完整类型的指针 - C 语言
- docker - 将现有容器从 Hyper-V 迁移到 WSL2 技术
- python - 如何停止在线程中运行的 aiohttp 服务器?
- r - 对从 Google 表格/Google 调查下载的数据进行自动标记的方法有哪些?
- pine-script - Pine Script 初学者问题与数组一起工作-> 从现有覆盖一些值中创建一个新的
- python - Python Web Scraping:输出到 csv
- keras - 从 onnx 到 keras 的转换时出现 onnx2keras 错误
- java - java支持注释的热交换吗?
- java - 在 Rest Assured 中获取 Get 请求时出现错误