将 2 个 csv 数据集与 Python 合并为一个公共 ID 列 - 一个 csv 具有唯一 ID 的多个记录

2024-01-24

我对 Python 很陌生。非常感谢您的支持

我有两个 csv 文件,我正在尝试使用 Student_ID 列合并它们并创建一个新的 csv 文件。

csv 1 :每个条目都有一个唯一的学生 ID

Student_ID    Age        Course       startYear
119           24         Bsc          2014

csv2:学生 ID 有多个记录,因为它为学生正在学习的每个科目都有一个新条目

Student_ID            sub_name       marks      Sub_year_level
119                   Botany1        60         2
119                   Anatomy        70         2
119                   cell bio       75         3
129                   Physics1       78         2
129                   Math1          60         1 

我想合并两个 csv 文件,以便拥有 csv1 中的所有记录和列以及新创建的新列,我想从 csv2 中获取每个学生每个 subject_year_level 的平均分数(必须计算)。所以最终的csv文件在所有记录中都会有唯一的Student_Ids

我希望新的输出 csv 文件如下所示:

Student_ID  Age  Course  startYear  level1_avg_mark  levl2_avg_mark  levl3_avgmark
119         24   Bsc     2014       60               65              70

您可以使用pivot_table http://pandas.pydata.org/pandas-docs/stable/generated/pandas.pivot_table.html with join http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html:

注意:参数fill_value代替NaN to 0,如果不需要,将其删除,默认聚合函数是mean.

df2 = df2.pivot_table(index='Student_ID',  \
                      columns='Sub_year_level',  \
                      values='marks', \
                      fill_value=0) \
         .rename(columns='level{}_avg_mark'.format)
print (df2)
Sub_year_level  level1_avg_mark  level2_avg_mark  level3_avg_mark
Student_ID                                                       
119                           0               65               75
129                          60               78                0

df = df1.join(df2, on='Student_ID')
print (df)
   Student_ID  Age Course  startYear  level1_avg_mark  level2_avg_mark  \
0         119   24    Bsc       2014                0               65   

   level3_avg_mark  
0               75  

EDIT:

需要自定义功能:

print (df2)
   Student_ID  sub_name  marks  Sub_year_level
0         119   Botany1      0               2
1         119   Botany1      0               2
2         119   Anatomy     72               2
3         119  cell bio     75               3
4         129  Physics1     78               2
5         129     Math1     60               1


f = lambda x:  x[x != 0].mean()
df2 = df2.pivot_table(index='Student_ID',columns='Sub_year_level', values='marks',aggfunc=f)
        .rename(columns='level{}_avg_mark'.format).reset_index()
print (df2)
Sub_year_level  Student_ID  level1_avg_mark  level2_avg_mark  level3_avg_mark
0                      119              NaN             72.0             75.0
1                      129             60.0             78.0              NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 2 个 csv 数据集与 Python 合并为一个公共 ID 列 - 一个 csv 具有唯一 ID 的多个记录 的相关文章

  • 如何从数据库模式自动生成示例 Django 应用程序?

    我正在评估概念验证应用程序的框架 该应用程序的生命周期约为 30 天 之后它将被遗忘或完全重写 我已确定要从现有数据库模式自动生成示例应用程序 然后调整视觉设计的某些方面 我看过一个演示红宝石 on Rails 它会为数据库中的每个表自动生
  • 如何在模型 Django 中创建必需:布尔字段

    我有一个模型 其中有一个名为的字段is student and is teacher Student and Teacher forms is teacher models BooleanField teacher status defau
  • matplotlib 的 pcolor 中的白线

    在某些 pdf 查看器 例如 OSX 上的 Preview 中 使用以下命令绘制的图matplotlib的 pcolor 有白线 见下图 我怎样才能摆脱它们 源代码非常简单 选择任何数据x y z import matplotlib mat
  • Django 和 AWS 简单电子邮件服务 [重复]

    这个问题在这里已经有答案了 我正在尝试启动并运行 django 站点 并且正在尝试启用 django 的标准密码重置服务 我的网站由 AWS EC2 托管 因此我想将 AWS SES 用于我的电子邮件服务 但是 我无法使 smtp 连接正常
  • 点击后 Dash DropDown 关闭

    我不希望下拉菜单在选择值后关闭 我希望它在我的页面上保持打开状态 我正在使用 dcc Dropdown dcc Dropdown id job type options self options placeholder Select one
  • Python中非常大的整数的math.pow是错误的[重复]

    这个问题在这里已经有答案了 我试图通过计算一个整数的非常大的幂来打印一个非常大的数字 尽管我的代码是正确的 但我没有观察到所需的输出 一般来说 Python解释器可以打印系统内存支持的非常大的整数 考虑到这个假设 下面是我正在运行的代码 a
  • 如果工作表不存在,Pandas 将工作表附加到工作簿,否则覆盖工作表

    我正在使用 pandas 更新现有的 Excel 工作簿 当使用ExcelWriter对象 我可以覆盖工作表 如果存在 否则创建一个新工作表吗 我的代码附加了新工作表 但是当我尝试覆盖现有工作表时 它会附加一个名称略有不同的新工作表 例如
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre
  • 如何在data.table中使用OR条件连接表

    在 data table 中是否可以使用 OR 条件连接表 例如 library data table X lt data table x c a b c d e f y c 1 1 2 2 3 3 z c 10 11 12 13 14 1
  • Python:使用Excel CSV文件仅读取某些列和行

    虽然我可以读取 csv 文件而不是读取整个文件 但如何仅打印某些行和列 想象一下这是 Excel A B C D E State Heart Disease Rate Stroke Death Rate HIV Diagnosis Rate
  • 使用 django-profiles 以配置文件形式编辑相关模型

    我在用着Django 配置文件 http bitbucket org ubernostrum django profiles wiki Home在我的应用程序中 因为它为我提供了一些简单的视图 可以帮助我更快地到达我想去的地方 但是 我有一
  • Python 柯里化任意数量的变量

    我正在尝试使用柯里化在 Python 中进行简单的函数添加 我找到了这个咖喱装饰器here https gist github com JulienPalard 021f1c7332507d6a494b def curry func def
  • 如何使 cx-oracle 将查询结果绑定到字典而不是元组?

    这是我的代码 我想找到一种方法将查询结果作为字典列表而不是元组列表返回 看起来 cx oracle 通过部分文档讨论 绑定 来支持这一点 虽然我不知道它是如何工作的 def connect dsn cx Oracle makedsn hos
  • 如何在Python中一次比较二维数组的2列与另一个数组的列

    我有两个字符串数组 每个数组有三列 我想比较两个二维数组的前两列 有 3 列和 4000 行 如果它们匹配 那么我需要那些匹配的值 但是我的代码不起作用 这是一个示例 array1 1stcolumn 2ndColumn 3rdColumn
  • 如何在Python中仅列出顶级目录?

    我希望能够仅列出某个文件夹内的目录 这意味着我不需要列出文件名 也不需要其他子文件夹 让我们看看一个例子是否有帮助 在当前目录中我们有 gt gt gt os listdir os getcwd cx Oracle doc DLLs Doc
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • centos上无法安装Pillow

    我上面有 centos 6 3 和 python 2 6 当我尝试通过 easy install 安装它时 出现以下错误 imaging c 76 20 error Python h No such file or directory In
  • 根据键的重复值从列表中删除字典

    我是Python新手 假设我有以下字典列表 mydictList a 1 b 2 c 3 a 2 b 2 c 4 a 2 b 3 c 4 从上面的列表中 我想删除具有相同键 b 值的字典 所以结果列表应该是 mydictList a 1 b
  • Django Python - LDAP 身份验证

    我目前正在研究 Django Python 我的目标是从 Ldap 目录对用户进行身份验证 我确实有 python 代码来访问 ldap 目录并检索信息 Code import ldap try l ldap open ldap forum

随机推荐

  • Tkinter:设置“比例”值而不触发回调?

    我有一个 Tkinter GUI 其中有一个Scale目的 我分配了一个回调 由command构造函数参数 以在用户更改刻度位置时执行操作 然而 也存在一种情况 刻度表示的值被外部修改 所以我使用设置刻度位置Scale set 在这种情况下
  • 如何在 Bitbucket 项目中使用 SSH 密钥?

    我在 Bitbucket 中生成和使用 SSH 密钥的步骤 ssh keygen t rsa C my email cat ssh id rsa pub 复制我的钥匙ssh rsa AAAAB3Nz my email到剪贴板 在 bitbu
  • 在指令模板内如何让 Angular ui-router ui-sref 工作?

    基本上 我正在尝试更改 自定义 ui bootstrap accordion 的行为 除了与 ui router 的集成之外 一切正常 这是我想要使用手风琴的方式
  • Jaxb:为固定值属性生成常量值

    我目前正在开发一个使用以下结构的 xsd
  • Visual Studio 2017 Node.js 异常不起作用

    我刚刚开始使用 VS 2017 Professional 进行 Node js 开发 调试通常可以工作 但是当抛出未捕获的异常时 nodejs 进程会立即停止 并且我没有任何更改来跟踪问题 我还在调试器设置中启用了nodejs exptio
  • 通过安装程序 (MSI) Windows 7 更新 Node.js 时看不到最新版本

    我正在尝试更新 Windows 7 机器上的节点 但在重新安装 更新节点后我没有看到最新版本 我只是出去http nodejs org download http nodejs org download 并获取最新的 Windows 安装程
  • 用户友好且难以猜测的唯一标识符

    我的团队正在开发一个具有旧数据库的应用程序 该数据库使用两个不同的值作为 Group 对象的唯一标识符 Id是一个自动递增的 Identity 列 其值由插入时的数据库确定 GroupCode由应用程序决定after插入 并且是 Group
  • 优化“where date Between”类型查询的 Dax 和模型

    我正在构建一个模型以允许报告两个单独的数据集 在本例中 我们将说学生数据集和员工数据集 数据集非常独立 两者之间唯一真正的联系是日期 因此从模型的角度来看 有一个学生星型模式和一个员工星型模式 显示的数据是快照类型数据 回答如下问题 对于选
  • 将 OpenCV 代码从 C++ 转换为 Java

    我目前正在尝试将一些遗留代码从 iPhone 迁移到 Android 此代码使用 OpenCV 库进行一些图像处理 总的来说 一切进展顺利 但我被一行代码困住了 我不知道如何将其转换为 Java 代码 Scalar dMean Scalar
  • 查明之前是否安装了特定的 Android 应用程序

    我有一个应用程序 它为您提供各种应用程序的列表 您可以从 Play 商店下载并安装这些应用程序来赚取好东西 现在 我不希望用户卸载以前安装的应用程序和再次下载通过我的应用程序并赚取好东西 有没有办法查明用户设备上以前是否安装过特定应用程序
  • 重新实现 ToUpper()

    如果 ToUpper 不存在 你会如何编写它 i18n 和 L10n 的奖励积分 由此引发了好奇心 http thedailywtf com Articles The Long Way toUpper aspx http thedailyw
  • heroku-rails-权限被拒绝(公钥)

    heroku create Creating floating planet 1824 done stack is bamboo mri 1 9 2 http floating planet 1824 heroku com email pr
  • 限制并行/同时下载 - 如何知道下载是否被取消?

    我有一个用 PHP 编写的简单文件上传服务 其中还包括一个脚本 当用户请求从此站点下载时 该脚本通过发送有限大小的数据包来控制下载速度 我想实现一个系统 将每个用户的并行 同时下载限制为 1 如果他们不是高级会员 在上面的下载脚本中 我可以
  • 使用队列和堆栈将中缀转换为后缀的运行时间是多少?

    在c 中 我知道队列和堆栈的各个函数的时间复杂度 但我不知道同时使用队列和堆栈的 infixToPostfix 函数的时间复杂度是多少 我当然是一名初学者程序员 而且我我很困惑 我认为使用堆栈和队列从中缀转换为后缀是 Dijkstra 的调
  • 在 SSAS 中使用参数测试 mdx 查询

    我想在 SSAS 中测试 MDX 查询 到目前为止我已经执行了以下步骤 我打开 SQL Profiler 并运行 SSRS 报告 我找到了我需要的查询 带有参数值 并选择了它SQL 探查器 https i stack imgur com 8
  • 等待异步请求结果

    我想以某种方式异步验证 ABPadLockScreen 中的引脚 因为引脚未保存在设备上 我使用 Alamofire 进行 http 请求 并使用 PromiseKit 来实现承诺 我尝试过使用AwaitKit但问题是我陷入了僵局 我也尝试
  • Visual Studio 中用于打开解决方案中的文件的快捷键(热键)?

    Visual Studio 中是否有快捷键可以在不使用 Resharper 或任何其他工具的情况下在解决方案中查找并打开文件 接受的解决方案doesn t开发新版本 For 视觉工作室 2022 and 2019 2017请执行下列操作 U
  • MySQL:大型 VARCHAR 与 TEXT?

    我在 MySQL 中有一个消息表 用于记录用户之间的消息 除了典型的 ID 和消息类型 所有整数类型 之外 我还需要将实际消息文本保存为 VARCHAR 或 TEXT 我将前端限制设置为 3000 个字符 这意味着消息永远不会插入数据库中的
  • 在 Colab 上安装 Google Drive

    我正在尝试使用以下代码在 Colab 上安装我的驱动器 from google colab import drive drive mount content drive 我收到以下错误 298 Terminate the DriveFS b
  • 将 2 个 csv 数据集与 Python 合并为一个公共 ID 列 - 一个 csv 具有唯一 ID 的多个记录

    我对 Python 很陌生 非常感谢您的支持 我有两个 csv 文件 我正在尝试使用 Student ID 列合并它们并创建一个新的 csv 文件 csv 1 每个条目都有一个唯一的学生 ID Student ID Age Course s