“重新索引仅对具有唯一值的索引对象有效”

Posted

技术标签:

【中文标题】“重新索引仅对具有唯一值的索引对象有效”【英文标题】:"Reindexing only valid with uniquely valued Index objects" 【发布时间】:2013-02-28 07:17:28 【问题描述】:

当我运行这样的代码时:

import pandas as pd

A = pd.DataFrame([('a', -1.374201, 35),
                  ('b', 1.415697, 29),
                  ('a', 0.233841, 18),
                  ('b', 1.550599, 30),
                  ('a', -0.178370, 63),
                  ('b', -1.235956, 42),
                  ('a', 0.088046, 2),
                  ('b', 0.074238, 84)], columns='key value other'.split())

B = A.groupby('key')['value'].mean()

C = pd.DataFrame([('a', 0.469924, 44),
                  ('b', 1.231064, 68),
                  ('a', -0.979462, 73),
                  ('b', 0.322454, 97)], columns='key value other'.split())

D = C.set_index('key')
D['value'] -= B

...最后一行失败并出现错误:

Exception: Reindexing only valid with uniquely valued Index objects

我做错了什么?

【问题讨论】:

你能发布数据吗? @PaulH:不是真的(一方面,它太大了) @PaulH:我发布了其他内容 【参考方案1】:

如果我正确地遵循了您的示例(顺便说一句,感谢您添加它),我相信您需要的很简单:

D.sub(B, axis='index')

这给了我:

In [29]: D.sub(B, axis='index')
Out[29]: 
        value      other
key                     
a    0.777595  44.307671
a   -0.671791  73.307671
b    0.779919  67.548856
b   -0.128690  96.548856

如您所见,这弄乱了other 列。如果这是一个问题,那么不幸的是,您又回到了相同的重复索引情况。

【讨论】:

以上是关于“重新索引仅对具有唯一值的索引对象有效”的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 重新索引仅对具有唯一值的索引对象有效

熊猫重新索引仅对具有唯一值的索引对象有效

使用公共列映射两个数据框

echarts 重新渲染(重新绘制,重新加载数据)

子组件不会重新渲染,但父组件会重新渲染。如何让子组件重新渲染?

重新生成索引和重新组织索引