[英]Have unique index value in Pandas DataFrame
我想要一個唯一的索引值,而不是多次重復相同的索引值。
示例:我有這個數據框:
test = pd.DataFrame({'id': ['a','a','a','a','b'],
'col_1': [1,2,3,4,5],
'col_2': [6,7,8,9,10]
})
id col_1 col_2
0 a 1 6
1 a 2 7
2 a 3 8
3 a 4 9
4 b 5 10
而我想要實現的是將id列作為索引,而不是重復。 我試過這個,但正如你所看到的,索引在每一行中重復:
test.set_index('id')
col_1 col_2
id
a 1 6
a 2 7
a 3 8
a 4 9
b 5 10
我想要實現的是(所有 4 個值組的索引“a”等):
col_1 col_2
id
a 1 6
2 7
3 8
4 9
b 5 10
任何想法如何做到這一點? 提前致謝。
您可以將id
列設置為索引。 為避免重復索引條目,還將索引設置為結果 MultiIndex 的第二級。
test.set_index(['id', test.index])
# Out:
col_1 col_2
id
a 0 1 6
1 2 7
2 3 8
3 4 9
b 4 5 10
如果您真的不想擁有非重復索引級別,只需將id
設置為索引即可。 但請注意,在這種情況下,pandas 的顯示格式將包括重復項:
test.set_index('id')
# Out:
col_1 col_2
id
a 1 6
a 2 7
a 3 8
a 4 9
b 5 10
同樣test.set_index('id').index.duplicated().any()
將產生True
,對於包含重復的索引具有典型的非最佳結果。
如果要將重復值替換為''
進行顯示,但最好是重復索引值,如果需要后期處理:
df = test.set_index('id')
df1 = df.set_index(df.index.where(~df.index.duplicated(), ''))
print (df1)
col_1 col_2
id
a 1 6
2 7
3 8
4 9
b 5 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.