Pandas DataFrame:使用列的唯一值转换框架

2024-03-21

我有一个以下形式的 pandas dataframe/csv

date        Country   Type     Val
2013-01-01  USA        x        23
2013-01-01  USA        y        13
2013-01-01  MX         x        11
2013-01-01  MX         y        14  
2013-01-02  USA        x        20
2013-01-02  USA        y        19
2013-01-02  MX         x        14
2013-01-02  MX         y        16

我想将其转换为表格

date       Country     x   y 
2013-01-01  USA        23  13
2013-01-01  MX         11  14
2013-01-02  USA        20  19
2013-01-02  MX         14  16

一般来说,我正在寻找一种使用单列的唯一值来转换表的方法。

我看过pivot and groupby但没有得到确切的形式。

提示:这可能可以通过以下方式解决pivot但我没能拿到表格


可能不是最优雅的方式,但使用unstack http://pandas.pydata.org/pandas-docs/stable/reshaping.html#reshaping-by-stacking-and-unstacking:

>>> df
         date Country Type  Val
0  2013-01-01     USA    x   23
1  2013-01-01     USA    y   13
2  2013-01-01      MX    x   11
3  2013-01-01      MX    y   14
4  2013-01-02     USA    x   20
5  2013-01-02     USA    y   19
6  2013-01-02      MX    x   14
7  2013-01-02      MX    y   16

>>> df.set_index(['date', 'Country', 'Type']).unstack('Type').reset_index()
            date Country  Val
Type                        x   y
0     2013-01-01      MX   11  14
1     2013-01-01     USA   23  13
2     2013-01-02      MX   14  16
3     2013-01-02     USA   20  19

更一般地说,删除结果中奇怪的分层列:

>>> cols = [c for c in df.columns if c not in {'Type', 'Val'}]
>>> df2 = df.set_index(cols + ['Type']).unstack('Type')
>>> df2
                    Val
Type                  x   y
date       Country
2013-01-01 MX        11  14
           USA       23  13
2013-01-02 MX        14  16
           USA       20  19
>>> df2.columns = df2.columns.levels[1]
>>> df2.columns.name = None
>>> df2
                     x   y
date       Country
2013-01-01 MX       11  14
           USA      23  13
2013-01-02 MX       14  16
           USA      20  19
>>> df2.reset_index()
         date Country   x   y
0  2013-01-01      MX  11  14
1  2013-01-01     USA  23  13
2  2013-01-02      MX  14  16
3  2013-01-02     USA  20  19
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas DataFrame:使用列的唯一值转换框架 的相关文章

随机推荐

  • 在 WSO2 Integration Studio 中将双精度数转换为整数

    我正在 XPath 表达式中执行算术运算 在下面的代码中 qty1和qty2是双倍的 因此我得到的结果是双倍的 我想将结果转换为整数并将其保存在属性中 如何在 WSO2 Integration Studio 中实现它
  • CasperJS/PhantomJS 在加载页面时卡住

    我正在使用 phantomjs 运行以下脚本 var casper require casper create var url https itunesconnect apple com itc static login view 1 pa
  • 在 Visual Studio 2017 中使用 Windows 窗体应用程序?

    我正在关注 Udemy 系列 它要求的第一件事是创建一个 Windows 窗体应用程序 使用 C 我不认为这是我的选择之一 这是因为我使用的是免费版本吗 我已经安装了 Windows Template Studio 为了开发WPF Wind
  • 这些 jQuery 就绪函数有什么区别?

    有什么区别 function and document ready function 什么都没有 http api jquery com jQuery jQuery3 这个函数的行为就像 document ready 因为它应该 用于包装其
  • 如何更改Windows系统时区?

    我正在编写一个软件 允许更改 Windows 中使用的当前时区参数 到目前为止 我发现的设置系统范围时区的唯一参考是API 或其变体SetDynamicTimeZoneInformation 但我不太确定如何使用它来更改当前时区 例如 需要
  • 多处理池工作线程中的线程标识符

    我相信Thread ident作为线程的唯一标识符 但现在我看到不同的工作进程multiprocessing poo Pool报告相同的线程标识符threading current thread ident How 根据平台的不同 ID 可
  • 等待新添加的控制事件 - C#

    我在面板中有一个按钮 它将调用另一个方法 该方法将创建一个用户控件来覆盖整个面板 这是面板按钮单击事件的代码 private void btnTarget Click object sender EventArgs e UtilLoader
  • 使用 tryCatch 在 R 中加载数据文件

    我想做的是从本地目录加载数据文件 如果不存在 则从网络服务器下载 目前我正在使用嵌套的 tryCatch 并且它似乎可以工作 这是尝试在 R 中完成此任务的正确方法吗 tryCatch attempt to read file from c
  • Scala 构造函数混乱 - 请澄清

    我对 Scala 构造函数感到非常困惑 例如 我有以下类 它们表示一棵树 其中包含诸如 Add 之类的运算符 并且树上的叶节点是数字 abstract class Node symbol String abstract class Oper
  • 将 UIBarButtonItems 添加到工具栏时出现问题

    我有一个 UINavigationController 和一个 UITableViewController 我想在底部显示一个带有 UIBarButtonItem 的工具栏 工具栏已显示 但按钮不会出现 有人知道为什么吗 void view
  • 在MIPS中,为什么跳转指​​令可以将程序计数器设置为28位目标地址

    在 MIPS 中 32 位跳转指令由 6 位操作码和 26 位我们要设置程序计数器的目标 目标 地址组成 然而 可以将程序计数器设置为 28 位目标地址 如果跳转指令只能容纳 26 位 这怎么可能呢 MIPS 上的指令始终是 4 字节对齐的
  • 如何在 HTML 表格中呈现树?

    我正在尝试在 HTML 表中显示树结构 它基本上是您提到某个网站的人员列表 但您可以展开每个人员并查看他们也提到的人员 仅 2 或 3 级 我还显示了每个人的许多信息 因此我使用了一个包含几列的表格 我想知道显示此内容的最佳方式是什么 以便
  • 在后台 android 每 5 分钟运行一次截击请求

    我使用 Volley 库来连接我的应用程序中的服务器 现在 当应用程序未运行 被用户杀死 时 我也必须每 5 分钟在后台发送一次请求 我该怎么做呢 有了后台服务 AlarmManager 谷歌表示这对于网络运营来说不是一个好的选择 还是其他
  • 设置 Range.Locked 时出现错误 1004

    当我试图设置Locked http msdn microsoft com en us library bb213550 28v office 12 29 aspxRange 对象的属性 代码如下所示 that goddamn sheet U
  • 如何将项目添加到列表中?

    我想添加一个字符串单词listOfVideosRated 列在我的用户表中 如果您可以发布您的架构 解析器映射模板 我可以提供更具体的建议 但我会尽力用您迄今为止发布的内容来回答这个问题 简单的方法 如果您已经拥有现有项目 则执行此操作的一
  • iOS7 UIWebView 内存泄漏

    我们有一个具有混合模式的综合 iOS 应用程序 UIWebView 在 JS 中保存了 Web 应用程序的主要部分 它在 iOS6 上运行良好 但最近我们发现所有 iOS7 设备 iPad iPhone 4 4S 和 iPhone 5 5C
  • 如何将字符串转换为 BigInteger?

    我正在尝试从标准输入中读取一些非常大的数字并将它们加在一起 但是 要添加到 BigInteger 我需要使用BigInteger valueOf long private BigInteger sum BigInteger valueOf
  • 默认显示所有文件

    有没有办法默认打开 Visual Studio 解决方案资源管理器 显示所有文件 设置 不是 Visual Studio 设置 但如果您使用版本控制 则会有所帮助 在 vcxproj 或解决方案范围的 props 文件中插入以下行
  • 我不明白为什么我的 group by 失败

    SELECT ENAME MAX SAL STORES CITY FROM EMPLOYEES INNER JOIN STORES ON EMPLOYEES STORE ID STORES STORE ID GROUP BY EMPLOYE
  • Pandas DataFrame:使用列的唯一值转换框架

    我有一个以下形式的 pandas dataframe csv date Country Type Val 2013 01 01 USA x 23 2013 01 01 USA y 13 2013 01 01 MX x 11 2013 01