我有如下所示的 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]}
