当前位置: 首页 > 面试题库 >

pandas取消堆叠问题:ValueError:索引包含重复的条目,无法重塑

鲜于宏义
2023-03-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

另一个选择(如果您不想聚合)是追加一个虚拟关卡,将其堆叠,然后放下该虚拟关卡…



 类似资料:
  • 问题内容: 我在尝试将索引设置为某个值时遇到错误。我试图用一个简单的例子重现它,但是我做不到。 这是我跟踪中的会话。我有一个带有字符串索引和整数列,浮点值的DataFrame。但是,当我尝试为所有列的总和创建索引时,出现错误。我创建了一个具有相同特征的小型DataFrame,但无法重现该问题,我可能会丢失什么? 我不太明白这是什么意思,此错误消息是什么意思?也许这可以帮助我诊断问题,这是我问题中最

  • 如果我定义一个像这样的分层索引数据框: 内容如下所示: 我知道如何提取与给定列对应的数据。例如。对于列: 如何提取符合以下标准集的数据: , , , column , , 列 和 、、列、以及从开始的所有列 是偶数 (顺便说一句,我做了不止一次rtfm,但我真的觉得难以理解。)

  • 当我试图将索引设置为某个值时,我得到了一个重新索引。我试图用一个简单的例子来重现这一点,但我做不到。 这是我在跟踪中的会话。我有一个带有字符串索引、整数列和浮点值的数据帧。但是,当我尝试为所有列的总和创建索引时,我得到的错误。我创建了一个具有相同特征的小数据帧,但无法重现问题,我会错过什么? 我真的不明白什么是的意思,这个错误消息是什么意思?也许这会帮助我诊断问题,这是我问题中最值得回答的部分。

  • 我正在处理一个数据管道在空气流,并不断运行到这个,我已经拍了我的头几天。 这是一个混乱的函数: 以下是AWS Cloudwatch日志的错误输出: 我已经运行了一些记录器,以了解该步骤中数据帧的输出,但我不知道问题点在哪里: 我在这些帖子中尝试了一切,但都没有成功: 错误:无法从重复轴重新索引 ValueError:不能从重复的轴重新索引是什么意思? 我也不完全明白为什么会发生这种情况。任何建议都

  • 我正在尝试创建包含值的访客条形图,例如: 我想显示一个每日总访客的条形图,该条形图应包含总访客和首次访客的信息。 所以数据条应该看起来像: 我查看了chartjs文档,但只找到了具有堆叠值的示例,并且该解决方案不适用于我所需的设计,是否有人可以参考文档/文章/教程或个人经验,或者我应该切换到d3js?谢谢

  • 我有两个数据集。 第一个,在市场变量中包含具有以下结构的一般市场趋势: 第二,在心情变量中,每一天都包含一些推文,在这个结构中带有同样的情绪: 所以,我想每天数一数有多少“熊市”和“牛市”情绪。它的工作原理,这是我的代码与注释: 结果如下: 所以它工作得很好,但我不明白为什么我不能访问或索引。 事实上,如果我尝试这样的事情: 我获得: 我错过了什么吗?谢啦