在 Pandas 中连接两个大型数据集的最佳方法

2023-11-26

我正在从需要连接的两个不同数据库下载两个数据集。当我将它们存储为 CSV 时,每个文件大约有 500MB 左右。分别适合内存,但当我加载两者时,有时会出现内存错误。当我尝试将它们与 pandas 合并时,我肯定会遇到麻烦。

对它们进行外部连接以免出现内存错误的最佳方法是什么?我手头没有任何数据库服务器,但如果有帮助的话,我可以在我的计算机上安装任何类型的开源软件。理想情况下,我仍然想仅在 pandas 中解决它,但不确定这是否可能。

澄清一下:合并是指外部联接。每个表有两行:产品和版本。我想检查哪些产品和版本仅在左表、右表和两个表中。我用一个

pd.merge(df1,df2,left_on=['product','version'],right_on=['product','version'], how='outer')

这似乎是一个任务dask被设计用于。本质上,dask can do pandas核心外操作,因此您可以使用不适合内存的数据集。这dask.dataframeAPI 是一个子集pandasAPI,所以应该没有太多的学习曲线。请参阅Dask DataFrame 概述页面以获取一些其他 DataFrame 特定详细信息。

import dask.dataframe as dd

# Read in the csv files.
df1 = dd.read_csv('file1.csv')
df2 = dd.read_csv('file2.csv')

# Merge the csv files.
df = dd.merge(df1, df2, how='outer', on=['product','version'])

# Write the output.
df.to_csv('file3.csv', index=False)

假如说'product' and 'version'是唯一的列,替换可能会更有效merge with:

df = dd.concat([df1, df2]).drop_duplicates()

我不完全确定这是否会更好,但显然未在索引上完成的合并在dask,所以值得一试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pandas 中连接两个大型数据集的最佳方法 的相关文章

随机推荐

  • 如何仅使用 CSS 获得悬停效果

    我已经得到了圆圈部分 我在 div 上设置了黑色的背景颜色 对于文本 我设置了 a hover 作为显示的颜色 我只是不知道如何为 div 设置 a hover 以及仅针对该周长 这是我的代码 HTML a class cirlink hr
  • 静态成员的两个实例,怎么可能?

    我有一个多线程应用程序 我在共享库中声明一个具有静态成员的类 从不同库的不同线程打印成员的地址会显示不同的结果 宣言 template
  • 指令在 ng-repeat 绑定的 内不起作用

    我有一个表 其中的行通过重复ng repeat 我正在尝试创建一个生成列的模板 td 对于每一行 tr app directive customtd function return restrict E template td positi
  • 来自 AngularJS Get for JSON 的 HTTP 状态 0

    我正在为 JSON 运行 http get 并且状态为 0 我已经下载了相同的 JSON 并且 get 在本地工作 并且在 Python 中使用请求库我可以毫无问题地获取 JSON 但是在AngularJS 不起作用 我不明白的是为什么 A
  • 在 macOS 的 SwiftUI 中更改 TextEditor 背景颜色

    我想更改 macOS 上 SwiftUI 文本编辑器的背景颜色 下面的代码 用于 iOS 是否有一个变体适用于 NSTextField 而不是 UITextView Thanks struct ContentView View init U
  • 社交网络应用程序数据库设计:如何改进此架构?

    背景 我正在为诗人和作家开发一款社交网络应用程序 让他们能够分享诗歌 收集反馈并与其他诗人交流 我很少接受过数据库设计方面的正式培训 但我一直在阅读书籍 SO 和在线数据库设计资源 试图在不过度设计的情况下确保性能和可扩展性 数据库是MyS
  • 复杂数据类型的 Typedef

    我试图从语法的角度理解 C 如何处理复杂 typedef 的底层机制 请考虑下面的示例 问题末尾包含参考文献 typedef int p1d 10 是正确的声明 即 p1d 这里是指向数组的指针 10 个整数 就像使用 Array 类型声明
  • Angular 2 下载文件:结果损坏

    我正在尝试使用 Angular 2 TypeScript 和 Web API 下载文件 我遇到的问题是 当下载文本文件时 该文件是文件 但是当尝试下载 PDF 文件时 例如 它已损坏 下载的文件内容都是乱码废话 我使用的 TypeScrip
  • 如何在 Python 中存储变量/首选项以供以后使用

    我正在用 Python 编写 Windows 程序 并且希望保存变量和用户首选项 以便即使在程序终止并重新启动后我也可以调用它们 有没有在 Windows 机器上执行此操作的理想方法 会 winregWindows 注册表适合这项任务吗 或
  • C++ 运算符重载的多态性

    如何使纯虚函数成为运算符 功能 我在基课上喜欢这个吗 int运算符 0 编译器给出错误 在派生类中operator 函数 编译器说派生类不能 make 因为下面的类是抽象的 我知道我无法创建抽象类的对象 但现在我尝试创建派生类对象 这是代码
  • Django 和 Postgres - 百分位数(中位数)和分组依据

    我需要计算每个卖家 ID 的期间中位数 参见下面的简化模型 问题是我无法构建 ORM 查询 Model class MyModel period models IntegerField null True default None sell
  • Django 设计登录表单并添加额外的跨度

    我有两个关于表单样式的问题 对于我的登录 我使用 Django 的默认身份验证功能 并且没有手动编写任何视图或表单 urls py urlpatterns patterns django contrib auth views url r l
  • 在 Centos 6 上安装最新的 mono

    我是 Linux 新手 字面意义上的新手 用过几次 我尝试通过 yum 安装 mono 但我得到了一个不支持 NET 4 的过时版本 如何安装单声道 2 10 8 好吧 这就是我想出的并且它对我有用 基于this文章 yum install
  • Node.js 服务器向 404.html 页面发送“404 未找到”消息

    我正在使用 node js 我想知道如何显示 404 html 而不是 404 Not Found 消息 这是我的 server js var http require http url require url path require p
  • java.lang.NoClassDefFoundError: org/apache/http/conn/scheme/SchemeSocketFactory

    我尝试通过 AWS 凭证发送邮件 但出现异常 java lang NoClassDefFoundError org apache http conn scheme SchemeSocketFactory 我添加了这些罐子 aws java
  • C# 中条件简写类似于 SQL 'in' 关键字

    在 C 中是否有一种简写方式可以这样写 public static bool IsAllowed int userID return userID Personnel JohnDoe userID Personnel JaneDoe Lik
  • HTML5 History API:“返回”到另一个页面,然后再次“前进”时显示 JSON

    我有一个页面 其中有几个搜索 过滤按钮 单击这些按钮时 会通过 AJAX 刷新下面列表的内容 在此过程中 我正在修改历史记录 通过pushstate 以便新的过滤页面可以添加书签 因此后退按钮可以工作 我还在监听 popstate 事件 以
  • 获取设备的 MAC 地址 - 当 wifi 关闭时

    我使用以下代码查找 Android 设备的 MAC 地址 WifiManager manager WifiManager getSystemService Context WIFI SERVICE WifiInfo info manager
  • Android Material 按钮,图标位于文本之上

    是否可以有一个在其文本顶部带有图标的材质按钮 如下所示 如果是 您能用一些代码解释一下吗 谢谢 现在您可以使用该属性iconGravity top 就像是
  • 在 Pandas 中连接两个大型数据集的最佳方法

    我正在从需要连接的两个不同数据库下载两个数据集 当我将它们存储为 CSV 时 每个文件大约有 500MB 左右 分别适合内存 但当我加载两者时 有时会出现内存错误 当我尝试将它们与 pandas 合并时 我肯定会遇到麻烦 对它们进行外部连接