Skip to main content
 首页 » 编程设计

python之从 Pandas 数据框中获取重复值的位置

2025年05月04日13mate10pro

我有如下所示的 Pandas 数据框 20,000 X 48(未提供所有数据)。

     0       1       2       3       4 
0    1  0.4784  0.4764  0.4251  0.4915 
1    2  0.6180  0.4503  0.3737  0.5377 
2    3  0.6735  0.4317  0.6295  0.5470 
3    4  0.5294  0.5871  0.5278  0.5544 
4    5  0.5555  0.4784  0.5443  0.5259 
5    6  0.4784  0.5798  0.6118  0.5491 
6    7  0.5397  0.8885  0.6683  0.6056 
7    8  0.8174  0.7972  0.5230  0.5707 
8    9  0.5763  0.6118  0.6675  0.5457 
9   10  0.8045  0.6249  0.5407  0.6716 
10  11  0.8036  0.6599  0.4947  0.6440 
11  12  0.7665  0.5408  0.4784  0.6212 
12  13  0.6273  0.7438  0.4784  0.8148 
13  14  0.4217  0.8473  0.6894  0.7844 
14  15  0.8768  0.4784  0.8009  0.5160 
15  16  0.5410  0.9091  0.6329  0.7311 
16  17  0.4784  0.5506  0.5655  1.0636 
17  18  0.6490  0.5864  0.5687  1.2680 
18  19  0.5173  0.4768  1.1053  0.5361 
19  20  0.5841  1.0596  0.7043  0.6657 

我想从每一列(0 到 4)中获取唯一值并获取它们出现的位置。

第 1 列的示例我想知道每个值的位置,如下所示

[0.4784:(0,16), 0.6180:1, 0.6735:2 ......等等]

在 pandas 或 numpy 中是否有用于执行此操作的内置函数

编辑

@chris 和@jazrael 的回答对我有用。我正在使用@chris 第二种解决方案,因为它易于阅读。

请您参考如下方法:

使用df.index.groupby:

df.index.groupby(df['1']) 
#or 
{k:list(v) for k,v in df.index.groupby(df['1']).items()} 

输出:

{0.4217: [13], 
 0.4784: [0, 5, 16], 
 0.5173: [18], 
 0.5294: [3], 
 0.5397: [6], 
 0.541: [15], 
 0.5555: [4], 
 0.5763: [8], 
 0.5841: [19], 
 0.618: [1], 
 0.6273: [12], 
 0.649: [17], 
 0.6735: [2], 
 0.7665: [11], 
 0.8036: [10], 
 0.8045: [9], 
 0.8174: [7], 
 0.8768: [14]}