将 pandas GroupBy 中的列值聚合为字典

2024-02-29

这是我之前面试的时候也问过的问题。

我们的输入数据具有以下列:

语言、产品 ID、货架 ID、排名

例如,输入将具有以下格式

English, 742005, 4560, 10.2 
English, 6000075389352, 4560, 49
French, 899883993, 4560, 32
French, 731317391, 7868, 81

我们希望对语言、货架 ID 列进行“分组”操作,并根据“排名”属性上的 sort desc 对产品列表进行排序,这将导致输出具有以下格式:

语言、货架 ID、{product_id:rank 1, Product_id:rank 2 ....}

对于每条记录。

对于给定的输入,输出如下:

English, 4560, {6000075389352:49, 742005:10.2}
French, 4560, 899883993:32
French, 7868, 731317391:81

我通过使用键(通过组合语言和货架 id 创建)创建一个字典并插入每个键的产品 id 和排名来解决这个问题。

我的方法有效,但看起来有一种更简单的方法可以使用 python pandas 库来实现。我读过一些参考资料,但我仍然不确定是否有比我所做的更好的方法(通过使用语言、书架 ID 和具有该密钥的字典创建密钥来解决问题)

任何帮助将不胜感激。


Setup

df = pd.read_csv('file.csv', header=None)  
df.columns = ['Lang', 'product_id', 'shelf_id', 'rank_id']    

df
      Lang     product_id  shelf_id  rank_id
0  English         742005      4560     10.2
1  English  6000075389352      4560     49.0
2   French      899883993      4560     32.0
3   French      731317391      7868     81.0

您可以使用df.groupby分组依据Lang and shelf_id。然后使用df.apply得到一本字典{productid : rankid}:

(df.groupby(['Lang', 'shelf_id'], as_index=False)
   .apply(lambda x: dict(zip(x['product_id'], x['rank_id'])))
   .reset_index(name='mapping'))

      Lang  shelf_id                              mapping
0  English      4560  {6000075389352: 49.0, 742005: 10.2}
1   French      4560                    {899883993: 32.0}
2   French      7868                    {731317391: 81.0}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas GroupBy 中的列值聚合为字典 的相关文章

随机推荐

  • jQuery自动上下滚动div

    我写了一个fiddle http jsfiddle net f7e3d440 8 自动上下滚动 div 效果很好 但是向下滚动时存在问题 它不显示最后一行 在本例中为 String4 有人可以帮我解决这个问题吗 div class cont
  • 在 ASP.Net 中运行时按名称隐藏 GridView 列

    是否可以在运行时按名称显示 隐藏 GridView 列 我可以通过索引来做到这一点 如下所示 gridReviews Columns 4 Visible false 不过我想执行以下操作 gridReviews Columns Name V
  • Terraform:如何读取地图列表?

    请参阅下面的示例 data aws kms secrets api key count length keys var keys secret name secret name payload element values var keys
  • 显式保存与隐式保存 - 什么时候更喜欢什么?

    我目前正在开发一个 wp7 应用程序 不想透露太多 但我在用户交互方面遇到了一些困难 我不确定的主要问题是 我应该在对话框中提供显式保存按钮并使用手机后退按钮作为取消 还是应该隐式保存用户点击手机后退按钮的时间 我想得越多 我就越不确定什么
  • 如何在 Scala JLine 调用之间保存和加载历史记录

    我在用着Scala JLine http search maven org artifactdetails 7Corg scala lang virtualized 7Cjline 7C2 10 2 RC1 7Cjar在我的 CLI 程序中
  • MySQL 5.5 至 5.7 停止使用索引

    我有 Magento 1 9 2 1 并在Apache2和MySQL 5 5上成功运行 我尝试将其迁移到另一台服务器并使用 NGINX 和 MySQL 5 7 但网站开始变得非常慢 12 秒对 2 秒 经过几个小时的调试 我发现一个查询有问
  • 简单的 PHP 联系表格未发送[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 发完更多帖
  • 如何在Steam WebAPI中通过AppName获取steam AppID

    所以我试图通过输入游戏名称来启动蒸汽游戏 为此我问自己是否可以通过输入的名称找出steam App ID 所以我尝试通过我的 steamApps 文件夹收集 ID 但没有成功 我还找到了一个网站 您可以在其中搜索特定游戏的名称 例如 htt
  • 期间发生内部错误:“更新 Maven 项目

    当我转换为 Maven 项目时 错误是 gt An internal error occurred during Updating Maven Project gt Unsupported IClasspathEntry kind 4 有什
  • 使用 Ajax 下载 JQuery 文件

    当我的用户选择生成报告时 我使用 John Culviner 出色的 fileDownload 插件来生成 请稍候 消息 当用户单击链接时 我向 PHP 发送一个 ajax 请求 该请求在服务器上生成 PDF 此时 我正在尝试更新 file
  • 调用未定义的函数curl_init(),即使它在php7中启用

    我刚刚在我的 Ubuntu 上安装了 php7 起初 没有任何问题 我的网站可以运行 但突然间 它开始返回 Call to undefined function curl init 错误 现在 我的页面包含的curl代码不起作用 在 php
  • 在 SwiftUI 3.0 iOS 15 中调整视图与键盘显示

    我的注册页面有VStack嵌入一 个ScrollView嵌入在VStack 在最里面VStack我有一系列TextField与定制TextFieldStyle 注册页面的 UI 如下所示 VStack ScrollView VStack s
  • Azure Powershell Linux

    除了 Linux Azure Powershell 之外 是否还有更多适用于 Linux Azure Powershell 的 cmdlet 是否有 Azure Powershell 的官方存储库对于Linux 有没有办法让终端在启动时启动
  • android 中的 vimeo 视频为 .mp4 格式

    我想在我的 Android 应用程序中播放 vimeo 视频 要播放我需要 mp4 格式的视频 我在下面的链接中有用户将视频获取为 mp4 格式 当我在浏览器中点击此网址时 它会要求我将文件另存为 mp4 格式 但是当我尝试通过编码获得相同
  • 自定义绘制控件的糟糕性能

    我正在做简单的图形控制wpf 我无法解释也无法解决性能问题 与 winform 相比 它太慢了 也许我做错了什么 我准备了demo来演示这个问题 这是测试控制 public class Graph FrameworkElement priv
  • 如何在 IIS 上使用 ASP.NET Core 3.1 API 部署 Angular SPA?

    我想象应该是简单的场景 有 Angular 8 SPA ASP NET Core 3 1 Web API 想在Windows Server上部署IIS的已通读 使用 IIS 在 Windows 上托管 ASP NET Core https
  • C++ 查找单词中的 Anagrams

    我正在开发一个程序 该程序使用以下命令来检查特定单词是否是字谜词std count但是 我认为我的功能逻辑不正确 而且我似乎无法弄清楚 假设文件中有以下单词 Evil Vile Veil Live 我的代码如下 include
  • PowerMock:模拟私有静态最终变量,具体示例

    要通过此测试必须进行的绝对最小模拟是什么 code class PrivateStaticFinal private static final Integer variable 0 public static Integer method
  • 使用 ODBC 转义包含问号的访问表名称

    我有一个Access数据库要查询如下 id name Print 1 one Yes 2 two No 现在 我在 java 中的查询 使用带有 ODBC 连接器的PreparedStatement 如下所示 select from tab
  • 将 pandas GroupBy 中的列值聚合为字典

    这是我之前面试的时候也问过的问题 我们的输入数据具有以下列 语言 产品 ID 货架 ID 排名 例如 输入将具有以下格式 English 742005 4560 10 2 English 6000075389352 4560 49 Fren