我的熊猫数据框为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...... so on]
在pandas或numpy中是否有任何内置函数可以做到这一点
编辑
@chris和@jazrael的回答为我工作。我正在使用@chris第二种解决方案,因为它很容易阅读。
答案 0 :(得分:5)
使用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]}
答案 1 :(得分:3)
对具有Series
或join
的字符串中的索引值的list
使用字典推导:
dfs = {x: df.rename(str).reset_index().groupby(x, sort=False)['index'].apply(', '.join)
for x in df.columns}
#select by column name
print (dfs['1'])
1
0.4784 0, 5, 16
0.6180 1
0.6735 2
0.5294 3
0.5555 4
0.5397 6
0.8174 7
0.5763 8
0.8045 9
0.8036 10
0.7665 11
0.6273 12
0.4217 13
0.8768 14
0.5410 15
0.6490 17
0.5173 18
0.5841 19
Name: index, dtype: object
如果需要列表:
dfs = {x: df.reset_index().groupby(x, sort=False)['index'].apply(list) for x in df.columns}
#select by column name
print (dfs['1'])
1
0.4784 [0, 5, 16]
0.6180 [1]
0.6735 [2]
0.5294 [3]
0.5555 [4]
0.5397 [6]
0.8174 [7]
0.5763 [8]
0.8045 [9]
0.8036 [10]
0.7665 [11]
0.6273 [12]
0.4217 [13]
0.8768 [14]
0.5410 [15]
0.6490 [17]
0.5173 [18]
0.5841 [19]
Name: index, dtype: object