在 Pandas DataFrame 中具有唯一索引值

Mat*_*etz 6 python dataframe pandas

我想要一个唯一的索引值,而不是多次重复相同的索引值。

示例:我有这个数据框:

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  
Run Code Online (Sandbox Code Playgroud)

而我想要实现的是将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  
Run Code Online (Sandbox Code Playgroud)

我想要实现的是(所有 4 个值组的索引“a”等):

    col_1  col_2
id              
a   1      6    
    2      7    
    3      8    
    4      9    
b   5      10  
Run Code Online (Sandbox Code Playgroud)

任何想法如何做到这一点?提前致谢。

Sco*_*y1- 7

您可以将该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
Run Code Online (Sandbox Code Playgroud)

如果您真的不想拥有非重复索引级别,只需将其设置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
Run Code Online (Sandbox Code Playgroud)

test.set_index('id').index.duplicated().any()将 yield True,对于包含重复项的索引具有典型的非最佳结果。