Ich bekomme einen ValueError: cannot reindex from a duplicate axis
, wenn ich versuche, einen Index auf einen bestimmten Wert zu setzen. Ich habe versucht, dies mit einem einfachen Beispiel zu reproduzieren, aber es ist mir nicht gelungen.
Hier ist meine Sitzung innerhalb der ipdb
Spur. Ich habe ein DataFrame mit einem String-Index und ganzzahligen Spalten sowie Gleitkommawerten. Wenn ich jedoch versuche, einen sum
-Index für die Summe aller Spalten zu erstellen, erhalte ich einen ValueError: cannot reindex from a duplicate axis
Fehler. Ich habe ein kleines DataFrame mit den gleichen Merkmalen erstellt, konnte das Problem jedoch nicht reproduzieren. Was könnte mir entgehen?
Ich verstehe nicht wirklich, was ValueError: cannot reindex from a duplicate axis
bedeutet, was bedeutet diese Fehlermeldung? Vielleicht hilft mir das bei der Diagnose des Problems, und dies ist der am meisten zu beantwortende Teil meiner Frage.
ipdb> type(affinity_matrix)
ipdb> affinity_matrix.shape
(333, 10)
ipdb> affinity_matrix.columns
Int64Index([9315684, 9315597, 9316591, 9320520, 9321163, 9320615, 9321187, 9319487, 9319467, 9320484], dtype='int64')
ipdb> affinity_matrix.index
Index([u'001', u'002', u'003', u'004', u'005', u'008', u'009', u'010', u'011', u'014', u'015', u'016', u'018', u'020', u'021', u'022', u'024', u'025', u'026', u'027', u'028', u'029', u'030', u'032', u'033', u'034', u'035', u'036', u'039', u'040', u'041', u'042', u'043', u'044', u'045', u'047', u'047', u'048', u'050', u'053', u'054', u'055', u'056', u'057', u'058', u'059', u'060', u'061', u'062', u'063', u'065', u'067', u'068', u'069', u'070', u'071', u'072', u'073', u'074', u'075', u'076', u'077', u'078', u'080', u'082', u'083', u'084', u'085', u'086', u'089', u'090', u'091', u'092', u'093', u'094', u'095', u'096', u'097', u'098', u'100', u'101', u'103', u'104', u'105', u'106', u'107', u'108', u'109', u'110', u'111', u'112', u'113', u'114', u'115', u'116', u'117', u'118', u'119', u'121', u'122', ...], dtype='object')
ipdb> affinity_matrix.values.dtype
dtype('float64')
ipdb> 'sums' in affinity_matrix.index
False
Hier ist der Fehler:
ipdb> affinity_matrix.loc['sums'] = affinity_matrix.sum(axis=0)
*** ValueError: cannot reindex from a duplicate axis
Ich habe versucht, dies mit einem einfachen Beispiel zu reproduzieren, aber ich bin gescheitert
In [32]: import pandas as pd
In [33]: import numpy as np
In [34]: a = np.arange(35).reshape(5,7)
In [35]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], range(10, 17))
In [36]: df.values.dtype
Out[36]: dtype('int64')
In [37]: df.loc['sums'] = df.sum(axis=0)
In [38]: df
Out[38]:
10 11 12 13 14 15 16
x 0 1 2 3 4 5 6
y 7 8 9 10 11 12 13
u 14 15 16 17 18 19 20
z 21 22 23 24 25 26 27
w 28 29 30 31 32 33 34
sums 70 75 80 85 90 95 100