Pandas 数据框左合并而不重新索引

2023-12-27

想知道是否有更直观的方法来合并数据框

In[140]: df1 = pd.DataFrame(data=[[1,2],[3,4],[10,4],[5,6]], columns=['A','B'], index=[1,3,5,7])
In[141]: df1
Out[141]: 
    A  B
1   1  2
3   3  4
5  10  4
7   5  6

In[142]: df2 = pd.DataFrame(data=[[1,5],[3,4],[10,3],[5,2]], columns=['A','C'], index=[0,2,4,6])
In[143]: df2
Out[143]: 
    A  C
0   1  5
2   3  4
4  10  3
6   5  2

我想要的合并应该是这样的

    A  B  C
1   1  2  5
3   3  4  4
5  10  4  3
7   5  6  2

关键是保留原始左数据帧索引。
左合并不起作用,因为它重新索引

In[150]: pd.merge(df1, df2, how='left', on='A')
Out[150]: 
    A  B  C
0   1  2  5
1   3  4  4
2  10  4  3
3   5  6  2

经过一番尝试和错误后,发现这种方法可行,但想知道是否有更直观的方法来实现相同的目的。

In[151]: pd.merge(df1, df2, how='outer', on=['A'], right_index=True)
Out[151]: 
    A  B  C
1   1  2  5
3   3  4  4
5  10  4  3
7   5  6  2

pd.merge(df1, df2, how='outer', on=['A'], right_index=True)

我觉得有点奇怪。它说让我们连接 A 列上的两个表以及右表的索引,而左表上没有任何内容。我想知道为什么这有效。

我会做这样的事情:

In [27]: df1['index'] = df1.index
In [28]: df2['index'] = df2.index
In [33]: df_merge = pd.merge(df1, df2, how='left', on=['A'])
In [34]: df_merge
Out[34]:
    A  B  index_x  C  index_y
0   1  2        1  5        1
1   3  4        3  4        2
2  10  4        5  3        3
3   5  6        7  2        4

In [35]: df_merge = df_merge[['A', 'B', 'C', 'index_x']]

In [36]: df_merge
Out[36]:
    A  B  C  index_x
0   1  2  5        1
1   3  4  4        3
2  10  4  3        5
3   5  6  2        7

[4 rows x 4 columns]

In [37]: df_merge.set_index(['index_x'])
Out[37]:
          A  B  C
index_x
1         1  2  5
3         3  4  4
5        10  4  3
7         5  6  2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 数据框左合并而不重新索引 的相关文章

随机推荐

  • 六个月内保留的参与者百分比

    我是一名学校老师 对 MS SQL Server 非常陌生 每个人都建议尝试一下这个网站 开始 我正在尝试编写查询来测试参与学术项目的不同类型的结果衡量标准 我想尝试几种不同的方法来计算这个结果测量 我试图计算的结果是 在该计划的六个月内保
  • 如何在不同的计算机上克隆 RStudio 环境

    我最近一直在加快使用 R 的速度 并且想知道最有效的方法是将 RStudio 环境 尤其是软件包安装 从一台计算机克隆到另一台计算机 我希望能够从台式机切换到笔记本电脑 但我在工作时经常向台式机添加软件包 并且希望有一种简单的方法来确保在笔
  • Python 中的持久记忆

    我有一个昂贵的函数 它接受并返回少量数据 一些整数和浮点数 我已经memoized http en wikipedia org wiki Memoization这个功能 但我想让备忘录持久化 已经有几个与此相关的线程 但我不确定某些建议方法
  • avformat_open_input 返回值,NaCl 模块上的错误代码

    我正在尝试将 FFmpeg 移植到我的 NaCl 模块中 到目前为止 我的模块链接了 ffmpeg 和 SDL 库 它已经可以播放 YUV 格式的视频 该视频被直接加载到内存中并复制到 YUVOverlay 缓冲区中 这非常简单 现在 我想
  • Excel 转 PDF 无需 Office

    我需要在我正在开发的 Windows 应用程序中生成 PDF 报告 我通过将 xlsx 文件导出为 pdf 来完成此操作 不过 我目前正在为此使用互操作 我需要在不要求用户购买软件的情况下执行此操作 因此不需要 Microsoft Offi
  • 分配大(32mb)连续区域

    是否有可能在运行时从内核代码分配大的 即 32mb 物理连续的内存区域 即不使用 bootmem 从我的实验来看 无论我使用什么 GFP 标志 似乎都不可能成功获得超过 4mb 的块 根据我读过的文档 GFP NOFAIL 应该让 kmal
  • iOS 模拟器游戏运行速度非常慢(低 fps)

    深入研究 sprite 套件 xcode 5 我正在使用两个示例程序 1 创建新项目时包含的默认宇宙飞船示例 2 我下载的冒险游戏 在 iOS 模拟器中运行这些示例 似乎哪个并不重要 每个的帧速率绝对是糟糕的 如果我在太空船 hello w
  • 以相同的 C# 形式从 web 浏览器链接到 ScintillaNET 编辑器?

    我是 ScintillaNET 的新手 我以相同的形式使用 webbrowser 和 scintillaNET 编辑器组件 我的任务是当我单击网络浏览器中的链接时 它应该链接到编辑器中的文本 任何帮助和建议将不胜感激 提前致谢 None
  • Azure ARM 模板和 REST API

    我正在尝试学习 Azure 资源模板 并尝试了解何时使用它们以及何时使用 REST API 背后的工作流程 我的感觉是 在 Azure 中创建虚拟网络和子网是相当罕见的情况 一旦您按照需要进行设置 就不会过于频繁地修改它 而是将内容部署到该
  • jQuery 中的弹出窗口

    我需要一个带有单选按钮选项的弹出窗口 我已经测试过Impromtu http en wikipedia org wiki Impromptu 28programming environment 29 有没有简单的 Popupwindow 插
  • 交换两条线

    我怎样才能使用 sedH h x g G等命令交换两行 例如在文件中 START this is a dog this is a cat this is something else END 假设我想用 这是别的东西 交换 这是一只狗 这是
  • 电子商务点击量未显示在 Google Analytics 测量协议中

    因为我在网站上接受 PayPal 付款 所以我尝试使用测量协议在服务器端发送交易详细信息 使用 PayPal 付款的访问者通常不会返回我的网站查看订单确认页面 因此依靠 IPN 来记录交易是更可靠的方式 我已经能够使用测量协议成功记录事件命
  • 将 Android 设备连接到 WiFi 打印机

    我想通过我的 Android 手机使用 wifi 以任何其他方式打印我的 pdf 文档 或者请给我一个关于是否可以将我们的设备连接到 wifi 打印机或发送我们的文档进行打印的建议 我希望我能尽快得到您方面的最佳答案或任何建议 我能想到的最
  • 多个 C# 应用程序可以使用一个 App.Config 文件吗?

    我们有许多在计划任务上运行的 C 控制台应用程序 所有这些应用程序都有自己的配置文件 其中包含诸如我们的 smtp 服务器之类的设置 如果我们的 smtp 服务器发生了变化 我们将必须手动进入每个配置文件并进行更改 多个应用程序是否可以查看
  • VS Code 中是否有光标覆盖/覆盖模式?

    我似乎找不到任何方法将光标置于 覆盖 模式 就像当您按下插入键并且新键入的字符会覆盖现有的内联字符一样 我没有在网上找到任何关于 VS Code 中省略或包含此类功能的参考 但它似乎是一个相当常用的功能 这存在吗 我也错过了 Visual
  • Sparql - 如果任何一个变量未绑定,则串联失败

    您好 我正在使用 AllegroGraph 和 Sparql 查询来检索结果 这是重现我的问题的示例数据 考虑下面的数据 其中一个人有名字 中间名和姓氏
  • 为什么我在输出文件中看不到计算结果?

    这是后续如何对制表符分隔的数据文件中的列值进行平均 忽略标题行和左列 https stackoverflow com questions 9677533 how do i average column values from a tab s
  • 我的 SQL2008 实例在哪个端口上运行?

    Check out this pic of my SQL 2008 Management Configuration screen for TCP 我需要知道我正在哪个端口上运行 基于上一篇文章 https stackoverflow co
  • 无法在 Ubuntu 13.04 的 R 3.0 中安装 rJava

    我无法打电话rJava封装在R 3 0 我收到以下消息 Error package rJava was built before R 3 0 0 please re install it 当我尝试重新安装时出现错误rJava包裹 我已经提供
  • Pandas 数据框左合并而不重新索引

    想知道是否有更直观的方法来合并数据框 In 140 df1 pd DataFrame data 1 2 3 4 10 4 5 6 columns A B index 1 3 5 7 In 141 df1 Out 141 A B 1 1 2