簡體   English   中英

在 Pandas DataFrame 中具有唯一索引值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM