我想根据某些特定对从数据帧中查询(或定位)子数据帧。
使用迭代很容易做到这一点,但速度很慢。
import pandas as pd
df=pd.DataFrame([[1,2,3], [1,5,6], [7,8,9], [2,3,8]], columns=['x','y','z'])
df
Out[4]:
x y z
0 1 2 3
1 1 5 6
2 7 8 9
3 2 3 8
我想得到一个子数据框,其中 (x,y)=(1,2) 和 (x,y)=(1,5) 和 (x,y)=(2,3),如下所示
Out[5]:
x y z
0 1 2 3
1 1 5 6
3 2 3 8
我的方法是使用迭代来获取索引:
xy_list=[(1,2),(1,5),(2,3)]
index_list=[]
for x,y in xy_list:
index_list+=df.query('x==@x & y==@y').index.tolist()
df_sub=df.loc[index_list]
df_sub
Out[6]:
x y z
0 1 2 3
1 1 5 6
3 2 3 8
有没有什么方法可以在不使用迭代的情况下做到这一点?
慕村9548890
婷婷同学_
相关分类