Python:在pandas数据框中寻找索引的快速方法是什么?

10
我有一个如下所示的数据框:

df = 
    a   ID1         ID2         Proximity
0   0   900000498   NaN         0.000000
1   1   900000498   900004585   3.900000
2   2   900000498   900005562   3.900000
3   3   900000498   900008613   0.000000
4   4   900000498   900012333   0.000000
5   5   900000498   900019524   3.900000
6   6   900000498   900019877   0.000000
7   7   900000498   900020141   3.900000
8   8   900000498   900022133   3.900000
9   9   900000498   900022919   0.000000

我希望能够查找给定的一对ID1-ID2所对应的Proximity值。例如,给定输入[900000498, 900022133],期望输出结果为3.900000

1个回答

13

如果这是一个常见的操作,那么我会将索引设置为这些列,然后您可以使用loc进行索引查找并传递一组列值:

In [60]:
df1 = df.set_index(['ID1','ID2'])

In [61]:
%timeit df1.loc[(900000498,900022133), 'Proximity']
%timeit df.loc[(df['ID1']==900000498)&(df['ID2']==900022133), 'Proximity']
1000 loops, best of 3: 565 µs per loop
100 loops, best of 3: 1.69 ms per loop

您可以看到,一旦列形成索引,那么查找操作比过滤操作快3倍。

输出结果基本相同:

In [63]:
print(df1.loc[(900000498,900022133), 'Proximity'])
print(df.loc[(df['ID1']==900000498)&(df['ID2']==900022133), 'Proximity'])

3.9
8    3.9
Name: Proximity, dtype: float64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接