Tôi nhận được một ValueError: cannot reindex from a duplicate axis
khi tôi đang cố gắng đặt một chỉ mục đến một giá trị nhất định. Tôi đã cố gắng tái tạo điều này với một ví dụ đơn giản, nhưng tôi không thể làm được.
Đây là phiên của tôi bên trong ipdb
dấu vết. Tôi có một DataFrame với chỉ mục chuỗi và các cột số nguyên, các giá trị float. Tuy nhiên, khi tôi cố gắng tạo sum
chỉ mục cho tổng của tất cả các cột, tôi sẽ gặp ValueError: cannot reindex from a duplicate axis
lỗi. Tôi đã tạo một DataFrame nhỏ có cùng đặc điểm, nhưng không thể tái tạo vấn đề, tôi có thể thiếu gì?
Tôi không thực sự hiểu ý ValueError: cannot reindex from a duplicate axis
nghĩa của nó, thông báo lỗi này có nghĩa là gì? Có lẽ điều này sẽ giúp tôi chẩn đoán vấn đề, và đây là phần dễ trả lời nhất trong câu hỏi của tôi.
ipdb> type(affinity_matrix)
<class 'pandas.core.frame.DataFrame'>
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
Đây là lỗi:
ipdb> affinity_matrix.loc['sums'] = affinity_matrix.sum(axis=0)
*** ValueError: cannot reindex from a duplicate axis
Tôi đã cố gắng tái tạo điều này với một ví dụ đơn giản, nhưng tôi đã thất bại
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