我查阅了很多关于ValueError:cannot reindex from a duplicate axis([ValueError:cannot reindex from a duplicate axis'是什么意思?以及其他相关文章。我知道重复的行索引或列名可能会导致错误,但我仍然不能完全弄清楚到底是什么原因导致了我出现错误。
下面是我最擅长重现数据框架的精神,它确实会抛出错误。
d = {"id" : [1,2,3,4,5],
"cata" : [['aaa1','bbb2','ccc3'],['aaa4','bbb5','ccc6'],['aaa7','bbb8','ccc9'],['aaa10','bbb11','ccc12'],['aaa13','bbb14','ccc15']],
"catb" : [['ddd1','eee2','fff3','ggg4'],['ddd5','eee6','fff7','ggg8'],['ddd9','eee10','fff11','ggg12'],['ddd13','eee14','fff15','ggg16'],['ddd17','eee18','fff19','ggg20']],
"catc" : [['hhh1','iii2','jjj3', 'kkk4', 'lll5'],['hhh6','iii7','jjj8', 'kkk9', 'lll10'],['hhh11','iii12','jjj13', 'kkk14', 'lll15'],['hhh16','iii17','jjj18', 'kkk18', 'lll19'],['hhh20','iii21','jjj22', 'kkk23', 'lll24']]}
df = pd.DataFrame(d)
df.head()
id cata catb catc
0 1 [aaa1, bbb2, ccc3] [ddd1, eee2, fff3, ggg4] [hhh1, iii2, jjj3, kkk4, lll5]
1 2 [aaa4, bbb5, ccc6] [ddd5, eee6, fff7, ggg8] [hhh6, iii7, jjj8, kkk9, lll10]
2 3 [aaa7, bbb8, ccc9] [ddd9, eee10, fff11, ggg12] [hhh11, iii12, jjj13, kkk14, lll15]
3 4 [aaa10, bbb11, ccc12] [ddd13, eee14, fff15, ggg16] [hhh16, iii17, jjj18, kkk18, lll19]
4 5 [aaa13, bbb14, ccc15] [ddd17, eee18, fff19, ggg20] [hhh20, iii21, jjj22, kkk23, lll24]
df.set_index(['id']).apply(pd.Series.explode).reset_index()
以下是错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-63-17e7c29b180c> in <module>()
----> 1 df.set_index(['id']).apply(pd.Series.explode).reset_index()
14 frames
/usr/local/lib/python3.6/dist-packages/html" target="_blank">pandas/core/indexes/base.py in _can_reindex(self, indexer)
3097 # trying to reindex on an axis with duplicates
3098 if not self.is_unique and len(indexer):
-> 3099 raise ValueError("cannot reindex from a duplicate axis")
3100
3101 def reindex(self, target, method=None, level=None, limit=None, tolerance=None):
ValueError: cannot reindex from a duplicate axis
我使用的数据集只有几百MBs,这是一个痛苦的过程——列表中有很多列表,但上面的例子公平地反映了我的困境。即使我试图生成一个具有唯一值的假数据帧,我仍然不明白为什么会出现ValueError。
我已经探索了其他方法来爆炸列表,比如使用df.apply(lambda x:x.apply(pd.reset_index(). drop('level_1',1)
,它不会抛出值错误,但是,它肯定没有那么快,我可能会重新考虑如何处理df。尽管如此,我还是想知道为什么我得到的值错误,我得到的时候,我没有任何明显的重复值。
谢谢
在这里添加所需的输出,如下所示,这是我通过链接apply/stack/droplevels生成的。
id cata catb catc
0 1 aaa1 ddd1 hhh1
1 1 bbb2 eee2 iii2
2 1 ccc3 fff3 jjj3
3 1 NaN ggg4 kkk4
4 1 NaN NaN lll5
5 2 aaa4 ddd5 hhh6
6 2 bbb5 eee6 iii7
7 2 ccc6 fff7 jjj8
8 2 NaN ggg8 kkk9
9 2 NaN NaN lll10
10 3 aaa7 ddd9 hhh11
11 3 bbb8 eee10 iii12
12 3 ccc9 fff11 jjj13
13 3 NaN ggg12 kkk14
14 3 NaN NaN lll15
15 4 aaa10 ddd13 hhh16
16 4 bbb11 eee14 iii17
17 4 ccc12 fff15 jjj18
18 4 NaN ggg16 kkk18
19 4 NaN NaN lll19
20 5 aaa13 ddd17 hhh20
21 5 bbb14 eee18 iii21
22 5 ccc15 fff19 jjj22
23 5 NaN ggg20 kkk23
24 5 NaN NaN lll24
我不得不重新思考我是如何解析数据的。我在这篇文章中不小心遗漏了一点,那就是我使用了不平衡的列表。str.findall(regex_模式)。在不同的列上创建一个框架()。由于多年来某些元数据字段丢失(例如,“name”)而导致列表不平衡。然而,由于我从一列列表开始,我使用df分解了这些字段。分解,然后使用findall将模式提取到新的col,这意味着也可以创建空值。
对于一个500 MB的数据集,包含数十万行字符串类型的字段,整个过程可能不到5分钟。
pd的错误。系列explode()
无法求解,但创建了一个带有“id”列的长表单。
tmp = pd.concat([df['id'],df['cata'].apply(pd.Series),df['catb'].apply(pd.Series),df['catc'].apply(pd.Series)],axis=1)
tmp2 = tmp.unstack().to_frame().reset_index()
tmp2 = tmp2[tmp2['level_0'] != 'id']
tmp2.drop('level_1', axis=1, inplace=True)
tmp2.rename(columns={'level_0':'id', 0:'value'}).set_index()
tmp2.reset_index(drop=True, inplace=True)
id value
0 0 aaa1
1 0 aaa4
2 0 aaa7
3 0 aaa10
4 0 aaa13
5 1 bbb2
6 1 bbb5
7 1 bbb8
8 1 bbb11
9 1 bbb14
10 2 ccc3
11 2 ccc6
12 2 ccc9
...
我正在处理一个数据管道在空气流,并不断运行到这个,我已经拍了我的头几天。 这是一个混乱的函数: 以下是AWS Cloudwatch日志的错误输出: 我已经运行了一些记录器,以了解该步骤中数据帧的输出,但我不知道问题点在哪里: 我在这些帖子中尝试了一切,但都没有成功: 错误:无法从重复轴重新索引 ValueError:不能从重复的轴重新索引是什么意思? 我也不完全明白为什么会发生这种情况。任何建议都
问题内容: 我在尝试将索引设置为某个值时遇到错误。我试图用一个简单的例子重现它,但是我做不到。 这是我跟踪中的会话。我有一个带有字符串索引和整数列,浮点值的DataFrame。但是,当我尝试为所有列的总和创建索引时,出现错误。我创建了一个具有相同特征的小型DataFrame,但无法重现该问题,我可能会丢失什么? 我不太明白这是什么意思,此错误消息是什么意思?也许这可以帮助我诊断问题,这是我问题中最
当我试图将索引设置为某个值时,我得到了一个重新索引。我试图用一个简单的例子来重现这一点,但我做不到。 这是我在跟踪中的会话。我有一个带有字符串索引、整数列和浮点值的数据帧。但是,当我尝试为所有列的总和创建索引时,我得到的错误。我创建了一个具有相同特征的小数据帧,但无法重现问题,我会错过什么? 我真的不明白什么是的意思,这个错误消息是什么意思?也许这会帮助我诊断问题,这是我问题中最值得回答的部分。
以下是根据维基百科的霍尔分区算法。 来自维基百科的伪代码: java实现: 为什么输出错误(在代码注释中指出)?这是Hoare算法的已知限制吗?是我的实现还是维基百科的伪代码不正确?
我想尝试用于Android开发的Intellij平台,但即使在新鲜之后,它也显示Gradle失败。请帮助。 我试过调整线路 一些其他版本,但没有效果。 这是我的模块级Gradle 这是我的项目级别 Gradle Intellij构建gradles时我得到的错误是
我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!