pandas 中的旋转问题(在 R 中传播)

2024-02-05

我在使用 pandas 中的 pd.pivot() 或 hub_table() 函数时遇到一些问题。

我有这个:

df = pd.DataFrame({'site_id': {0: 'a', 1: 'a', 2: 'b', 3: 'b', 4: 'c', 5:
 'c',6: 'a', 7: 'a', 8: 'b', 9: 'b', 10: 'c', 11: 'c'},
                   'dt': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1,6: 2, 7: 2, 8: 2, 9: 2, 10: 2, 11: 2},
                   'eu': {0: 'FGE', 1: 'WSH', 2: 'FGE', 3: 'WSH', 4: 'FGE', 5: 'WSH',6: 'FGE', 7: 'WSH', 8: 'FGE', 9: 'WSH', 10: 'FGE', 11: 'WSH'},
                   'kw': {0: '8', 1: '5', 2: '3', 3: '7', 4: '1', 5: '5',6: '2', 7: '3', 8: '5', 9: '7', 10: '2', 11: '5'}})


df
Out[140]: 
    dt   eu kw site_id
0    1  FGE  8       a
1    1  WSH  5       a
2    1  FGE  3       b
3    1  WSH  7       b
4    1  FGE  1       c
5    1  WSH  5       c
6    2  FGE  2       a
7    2  WSH  3       a
8    2  FGE  5       b
9    2  WSH  7       b
10   2  FGE  2       c
11   2  WSH  5       c

我要这个:

dt   site_id   FGE   WSH
 1         a     8     5
 1         b     3     7
 1         c     1     5
 2         a     2     3
 2         b     5     7
 2         c     2     5

我已经尝试了一切!

df.pivot_table(index = ['site_id','dt'], values = 'kw', columns = 'eu')

or

df.pivot(index = ['site_id','dt'], values = 'kw', columns = 'eu')

应该有效。我也尝试过 unstack():

df.set_index(['dt','site_id','eu']).unstack(level = -1)

你的最后一次尝试(与unstack)对我来说效果很好,我不确定为什么它给你带来了问题。 FWIW,我认为使用索引名称而不是级别更具可读性,所以我这样做了:

>>> df.set_index(['dt','site_id','eu']).unstack('eu')

            kw    
eu         FGE WSH
dt site_id        
1  a         8   5
   b         3   7
   c         1   5
2  a         2   3
   b         5   7
   c         2   5

但同样,你的方式对我来说看起来很好,并且与 @piRSquared 所做的几乎相同(除了他们的答案添加了更多代码来摆脱多索引)。

我认为问题在于pivot是你只能传递一个变量,而不是一个列表?无论如何,这对我有用:

>>> df.set_index(['dt','site_id']).pivot(columns='eu')

For pivot_table,主要问题是“kw”是一个对象/字符并且pivot_table将尝试聚合numpy.mean默认情况下。您可能收到错误消息:“DataError:没有要聚合的数字类型”。

但有一些解决方法。首先,您可以转换为数字类型,然后使用相同的pivot_table命令

>>> df['kw'] = df['kw'].astype(int)
>>> df.pivot_table(index = ['dt','site_id'], values = 'kw', columns = 'eu')

或者,您可以更改聚合函数:

>>> df.pivot_table(index = ['dt','site_id'], values = 'kw', columns = 'eu', 
                   aggfunc=sum )

这是利用了字符串可以求和(连接)的事实,即使您无法获取它们的平均值。实际上,您可以在此处使用大多数对字符串进行操作的函数(包括 lambda)。

但请注意,pivot_table's aggfunc即使每个单元格只有一个值,这里也需要某种减少操作,所以实际上没有任何需要减少的!但是代码中有一个检查需要进行归约操作,所以你必须做一个。

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

pandas 中的旋转问题(在 R 中传播) 的相关文章

随机推荐

  • 为什么以 null 作为回调的 array_map() 创建一个“数组的数组”?

    今天我了解到一个特殊案例array map 在 PHP 中 文档中作为旁注提到了这一点 示例 4 创建数组的数组 上面的例子将输出 Array 0 gt Array 0 gt 1 1 gt one 2 gt
  • 如何在 Libgdx 中支持 OpenGL ES GL10、GL11 和 GL20?

    我正在编写一个使用 GL10 的 3d 游戏 但我希望该应用程序支持 GL11 或 GL20 如果可用 支持这三者的最佳设计是什么 或者这是一个愚蠢的差事 我应该只专注于支持一个版本 我当前的想法是将 render 函数拆分为 render
  • 故事板和笔尖兼容吗?

    我可以在我的所有应用程序中使用故事板 然后将其推送到一个笔尖 还是不可能同时使用这两个笔尖 故事板和 nib 可以在一个应用程序中一起使用 但如果您的部署目标低于 iOS 5 那么它将无法工作 故事板仅适用于 iOS 5 x 当然 您需要自
  • 启动另一个 Windows 应用商店应用程序

    当用户单击我的应用程序中的按钮时 是否可以启动不同的 Windows 应用商店应用程序 是的 您可以从您的应用程序启动其他 Windows 应用商店应用程序 例如 Bing 地图 地图应用程序支持协议激活 这意味着您可以使用特殊的 url
  • Apple 多个推送通知在通知托盘中不可见

    我基本上想在同一个应用程序中在 iOS 的通知托盘中显示多个推送通知 如果我的数据已打开 同时通过 APNS 触发推送通知 则此方案有效 但仅收到最新的数据 以防我离线并在一段时间后回来 此功能已得到 APNS 文档的确认 然而 这在 Wh
  • Laravel 如何使用另一台服务器作为文件存储

    我正在使用 Laravel 7 6 我在每台服务器中有两个 Laravel 项目 服务器是普通服务器 既不是 AWS 也不是 Digital Ocean 只是专用服务器 项目 1 位于服务器 1 中 项目 2 位于服务器 2 中 我的问题是
  • Servicereferences.clientconfig 更改值 silverlight

    我有一个 servicereference clientconfig 现在 我的安装团队正在为我的 silverlight 应用程序创建安装 这是一个问题 因为在 servicereference clientconfig 中有一组 Web
  • c# - 关闭浏览对话框导致表单关闭

    我有一个通过以下方式显示的表格 ShowDialog 表格没有CancelButton指定的 当我打开一个BrowseDialog从窗体中 然后关闭BrowseDialog 表格也被关闭 我怎样才能防止这种情况发生 单击 浏览 按钮时 br
  • 将 DTO 映射到域对象的最佳实践?

    我看到很多与映射相关的问题DTOs https en wikipedia org wiki Data transfer object到域对象 但我觉得他们没有回答我的问题 我以前使用过很多方法并有自己的意见 但我正在寻找更具体的方法 情况
  • PHP GET 请求,发送标头

    我需要执行获取请求并随之发送标头 我可以用什么来做到这一点 我需要设置的主要标头是浏览器标头 是否有捷径可寻 如果您使用 cURL 则可以使用curl setopt handle CURLOPT USERAGENT browser desc
  • Spring - 多种配置和@CompontentScan顺序

    我有多个Spring Configuration定义 bean 的类 我运行应用程序的主类有 SpringBootApplication scanBasePackageClasses BasePackage class 我的问题是 扫描这些
  • 什么是匹配不带子域的有效域名的正则表达式?

    我需要验证域名 谷歌网站 stackoverflow com 因此 一个最原始形式的域名 甚至不是像 www 这样的子域名 字符应该只是a z A Z 0 9 and period and dash 域名部分不应以破折号 开头或结尾 例如
  • 删除掩模图像中不需要的部分

    我使用 U2NET 成功计算了图像的掩模 如下所示 然而 正如我们所看到的 面具是not内部完全白色 并且在掩模外部 即左侧部分 也可以观察到一些不需要的伪影 我正在尝试使用膨胀和腐蚀操作来解决上述两个问题 但我认为这是错误的方法 因为它不
  • NHibernate 会话的生命周期应该是多长?

    我是 NHibernate 的新手 在过早关闭会话时遇到了一些问题 我通过重用会话而不是为每个事务打开一个会话来暂时解决了这个问题 然而 我的印象是 每次需要时打开会话是会话生命周期管理的推荐方法 不 所以 处理会话的推荐方法是什么 他们的
  • BSON |终端和非终端

    阅读通过BSON规范 http bsonspec org specification我遇到了terminal and 非终结符其中的条款 例如 有效的BSON数据由文档表示非终结符 以下基本类型用作终端在语法的其余部分 BSON 规范中的
  • 使用程序集版本控制属性的最佳方法是什么?

    The 汇编版本 http msdn microsoft com en us library system reflection assemblyversionattribute aspx and 程序集文件版本 http msdn mic
  • 如何向/使用 RESTful WCF 服务传递和使用 JSON 参数?

    我是 RESTful 服务的初学者 我需要创建一个接口 客户端需要在其中传递最多 9 个参数 我更喜欢将参数作为 JSON 对象传递 例如 如果我的 JSON 是 age 100 name foo messages msg 1 msg 2
  • 将朝鲜文音节分解为字母 (jamo)

    我正在开发一个处理韩语句子的程序 我需要一种方法将音节或块分解为其字母 对于那些不懂韩文的人来说 一个音节由 2 4 个字母 jamo 组成 可以创建数千种不同的组合 我想做的就是将这些音节分解成构成它的字母 我能够通过将其 Unicode
  • 在 Virtuoso 中定义端点

    如何在 Virtuoso 中为我的本体定义新端点 我能够通过 Virtuoso Conductor 的 RDF Store Upload 选项卡上传我的本体 现在我需要定义一组端点 以便能够通过 HTTP 在我的应用程序中使用它们 Virt
  • pandas 中的旋转问题(在 R 中传播)

    我在使用 pandas 中的 pd pivot 或 hub table 函数时遇到一些问题 我有这个 df pd DataFrame site id 0 a 1 a 2 b 3 b 4 c 5 c 6 a 7 a 8 b 9 b 10 c