熊猫重新索引仅对具有唯一值的索引对象有效
Posted
技术标签:
【中文标题】熊猫重新索引仅对具有唯一值的索引对象有效【英文标题】:pandas Reindexing only valid with uniquely valued Index objects 【发布时间】:2012-11-01 09:18:10 【问题描述】:安装最新版本的 pandas 0.9.0 以防出现错误。编辑:忘了说这是 Python 2.7。 试图读取 Excel 文件。那部分似乎还可以。 最初,我为 pandas 数据帧的每一行尝试 iteritems(),因为 id_company 必须针对 mysql 数据库进行验证(不包括代码)。将其放入元组的相同/相似错误消息(代码如下)。错误信息如下。
请注意,有一个 .reindex() 但它以前也不起作用。 reindex() 有点像冰雹。
作为一种解决方法,我可能会简单地从我的目标 sql 导入并进行连接。由于数据集的大小,我很担心。
import pandas as pd
def runNow():
#identify sheet
source = 'C:\Users\jlalonde\Desktop\startup_geno\startupgenome_w_id_xl_20121109.xlsx'
xls_file = pd.ExcelFile(source)
sd = xls_file.parse('Sheet1')
source_u = sd.drop_duplicates(cols = 'id_company', take_last=False)
source_r = source_u[['id_company','id_good','description', 'website','keyword', 'company_name','founded_month', 'founded_year', 'description']]
source_i = source_r.reindex() #hail mary
tup_r = [tuple(x) for x in source_i.values]
这是错误:
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
sg_sql_2.runNow()
File "sg_sql_2.py", line 31, in runNow
tup_r = [tuple(x) for x in source_r.values]
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 1443, in as_matrix
return self._data.as_matrix(columns).T
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 723, in as_matrix
mat = self._interleave(self.items)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 743, in _interleave
indexer = items.get_indexer(block.items)
File "C:\Python27\lib\site-packages\pandas\core\index.py", line 748, in get_indexer
raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects
所以,在一天中的大部分时间里,在我把头撞在墙上之后,谁能告诉我这是一个错误还是我错过了一些非常明显的东西?
【问题讨论】:
可能的欺骗:***.com/questions/13292944/…。你有可以用来重现错误的例子吗? 我可以发布excel文件没问题。不,这不是重复的,因为我有一个唯一索引,并且该索引的另一个链接是重复的......虽然解决方案可能是相同的...... github 问题跟踪此错误:github.com/pydata/pandas/issues/2236 是的,无论谁先回答,我都会永远感谢您!我将在两个论坛上发布解决方案,以便在任何地方都没有悬而未决的问题。我这样做是因为我需要快速解决问题并且无法发布,然后等待一个星期没有答案,然后尝试另一个论坛并等待另一个星期以解决它。我工作的最后期限不允许这样的拖延。所以为地毯式轰炸道歉,但我保证最终会干净的。 【参考方案1】:今天在 GitHub 上修复了底层错误:https://github.com/pydata/pandas/issues/2236
【讨论】:
以上是关于熊猫重新索引仅对具有唯一值的索引对象有效的主要内容,如果未能解决你的问题,请参考以下文章