Pandas unstack问题:ValueError:索引包含重复条目,无法重塑

2023-12-14

我正在尝试用 pandas 解开多索引,并且不断收到:

ValueError: Index contains duplicate entries, cannot reshape

给定一个包含四列的数据集:

  • id(字符串)
  • 日期(字符串)
  • 位置(字符串)
  • 值(浮点数)

我首先设置了三级多索引:

In [37]: e.set_index(['id', 'date', 'location'], inplace=True)

In [38]: e
Out[38]: 
                                    value
id           date       location       
id1          2014-12-12 loc1        16.86
             2014-12-11 loc1        17.18
             2014-12-10 loc1        17.03
             2014-12-09 loc1        17.28

然后我尝试取消堆叠位置:

In [39]: e.unstack('location')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-39-bc1e237a0ed7> in <module>()
----> 1 e.unstack('location')
...
C:\Anaconda\envs\sandbox\lib\site-packages\pandas\core\reshape.pyc in _make_selectors(self)
    143 
    144         if mask.sum() < len(self.index):
--> 145             raise ValueError('Index contains duplicate entries, '
    146                              'cannot reshape')
    147 

ValueError: Index contains duplicate entries, cannot reshape

这里发生了什么?


这是一个示例 DataFrame,它显示了这一点,它具有具有相同索引的重复值。问题是,您想要聚合这些还是将它们保留为多行?

In [11]: df
Out[11]:
   0  1  2      3
0  1  2  a  16.86
1  1  2  a  17.18
2  1  4  a  17.03
3  2  5  b  17.28

In [12]: df.pivot_table(values=3, index=[0, 1], columns=2, aggfunc='mean')  # desired?
Out[12]:
2        a      b
0 1
1 2  17.02    NaN
  4  17.03    NaN
2 5    NaN  17.28

In [13]: df1 = df.set_index([0, 1, 2])

In [14]: df1
Out[14]:
           3
0 1 2
1 2 a  16.86
    a  17.18
  4 a  17.03
2 5 b  17.28

In [15]: df1.unstack(2)
ValueError: Index contains duplicate entries, cannot reshape

一种解决方案是reset_index(然后回到df)并使用pivot_table.

In [16]: df1.reset_index().pivot_table(values=3, index=[0, 1], columns=2, aggfunc='mean')
Out[16]:
2        a      b
0 1
1 2  17.02    NaN
  4  17.03    NaN
2 5    NaN  17.28

另一种选择(如果您不想聚合)是附加一个虚拟级别,将其取消堆叠,然后删除虚拟级别...

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

Pandas unstack问题:ValueError:索引包含重复条目,无法重塑 的相关文章

随机推荐

  • Mockito:将真实对象注入私有@Autowired字段

    我正在使用 Mockito 的 Mock and InjectMocks注释将依赖项注入到用 Spring 注释的私有字段中 Autowired RunWith MockitoJUnitRunner class public class D
  • Spock 框架:间谍问题

    我在 Spock 中使用 Spy 时遇到问题 它要么无法正常工作 要么我的理解是错误的 所以我试图澄清这一点 考虑这段代码 Java public class CallingClass public String functionOne d
  • 无法关闭 ng-bootstrap Modal

    所以我有一个NgbModal其中有一个表单 我想要实现的是在成功提交后关闭它 这是我的模态组件 Component selector create update transaction templateUrl CreateOrUpdateT
  • 尝试使用多部分文件测试休息服务

    我正在尝试测试我创建的休息服务 服务是一个岗位 我想创建一个文件来传递参数 包括多部分文件 此时我正尝试从那里调用该服务 很确定这项服务不起作用 但是当我打电话给休息服务时 我有一个简单的表单 只传递几个值 包括 jpg 这是代码 Http
  • 读取时数据从内存流中被截断

    我有以下代码正在使用StreamWriter写信给MemoryStream 但是 当我尝试读回流时 我得到的数据被截断 using var outStream new MemoryStream using var outWriter new
  • Java:如何在打开另一个 JFrame 时关闭一个 JFrame?

    我的程序以 JFrame 中带有文本字段的图片开始 我希望当用户输入 start 时 它会关闭图片 JFrame 并使用主程序打开另一个 JFrame 我试过了 processEvent new WindowEvent this Windo
  • 类不是抽象的,并且不会重写抽象方法

    因此 我一直在为我的编程课做抽象作业 但遇到了问题 我现在的目标是能够使用抽象 然后能够用矩形和椭圆形绘制一个简单的城市 例如矩形建筑物或灯柱上的椭圆形灯 我编译时收到的错误是 MyTestApp Rectangle 不是抽象的 并且不会覆
  • 如何使用显式成员映射配置 AutoMapper 实现多态性?

    考虑以下基本情况 Mapper CreateMap
  • 如何从 iPhone 使用 HTTP POST 上传音频文件?

    我正在尝试将 caf 格式的音频文件从 iPhone 上传到网络服务器 下面给出了所使用的代码 问题是 我没有上传任何文件 PHP echo 中没有文件名的输出 任何帮助将不胜感激 我在iPhone端使用的代码是 NSData fileDa
  • 如何逐行读取Matlab mex函数的输入矩阵?

    我需要创建一个 Matlab mex 函数 它将接受输入矩阵并返回矩阵对角线 Input 1 2 3 4 5 6 预期输出 1 2 3 0 0 0 0 0 0 4 5 6 我的问题是 由于 Matlab 按列而不是按行读取矩阵 因此我的 m
  • 如何使用php获取包含特殊字符的字符串的第一个字符?

    I used string 0 缩短并显示用户名 姓氏的第一个字符 在用户名以 等特殊字符开头之前 它的效果非常好 例如 name ber echo name 0 echoes nothing 同时我正在使用mb substr string
  • 单击菜单项时pyqt系统托盘图标退出

    我是python和pyqt的新手 今天学习它们并写了一个小系统托盘恶魔 它运行 但是当我单击 关于 然后关闭对话框时 应用程序退出 我不知道为什么 简单代码如下 import sys from PyQt4 import QtGui clas
  • 使用 Retrofit 解析动态未知命名数组 Json

    我是改造新手 下面是 json response success servicecode 134 forecast month jan id 1 price 12 Product 1086 Qty 14 date 2018 10 27 16
  • 无法在 Chrome v76 中隐藏“Chrome 正在被自动化软件控制”信息栏

    将 Chrome 更新到版本 76 后 我不知道如何隐藏覆盖页面上某些控件的 Chrome 正在被自动化软件控制 通知 ChromeDriver 的最新稳定版本确实是 76 0 3809 68 以下代码适用于 Chrome 75 和 Chr
  • Spring Data Repository 的方面建议不起作用

    我正在尝试为存储库创建一些切入点和建议之前 以便在 Spring Boot 中的 Spring Data 中启用对实体管理器的某些存储库的过滤 我的项目中也有 Web 和服务层 AspectLogging 适用于两者 但我不能对存储库做同样
  • 如何创建每个类别的链接

    我正在尝试创建一个显示所有类别的导航栏 然后通过单击每个类别 它会链接到该类别中的所有帖子 我在下面尝试过 它显示所有类别 但不显示为链接 for category in site categories div class categori
  • 更改框架版本会导致:无法加载文件或程序集PresentationFramework?

    我正在开发WPF应用程序 该应用程序首先针对3 0框架 当我尝试使其在 4 0 上运行时 出现以下异常 System IO FileNotFoundException 是 未处理的消息 无法加载文件 或装配 PresentationFram
  • 将值从一个字段拆分为两个字段

    我有一个表字段membername其中包含用户的姓氏和名字 是否可以将它们分成 2 个字段memberfirst memberlast 所有记录均采用 名字姓氏 格式 不带引号且中间有空格 不幸的是 MySQL 没有分割字符串的功能 但是您
  • 如何重建bluez

    我怎样才能重建bluez 是否可以 例如 我想更改 avctp c 中的某些内容 我从他们的网站下载了最新的 bluez 版本并进行了我需要进行的更改 现在 我如何才能使更改生效 即我需要做什么来重建蓝牙 注意 我使用的是Ubuntu 12
  • Pandas unstack问题:ValueError:索引包含重复条目,无法重塑

    我正在尝试用 pandas 解开多索引 并且不断收到 ValueError Index contains duplicate entries cannot reshape 给定一个包含四列的数据集 id 字符串 日期 字符串 位置 字符串