当前位置: 首页 > 后端技术 > Python

Pandas提示:使用query()可以优雅地查询

时间:2023-03-26 17:59:19 Python

对于Pandas根据条件获取指定的数据,相信大家可以很容易的写出相应的代码,但是如果你之前没有使用过query,相信你会被它的简洁所吸引。钦佩!正常使用从创建DataFrame开始。将熊猫导入为pddf=pd.DataFrame({'A':['e','d','c','b','a'],'B':['f','b','c','d','e'],'C':范围(0,10,2),'D':范围(10,0,-2),'E.E':范围(10,5,-1)})我们现在选择所有A列的字母出现在B列的行。我们先来看两种常见的写法。>>>df[df['A'].isin(df['B'])]ABCDE.E0ef010101db2892cc4683bd647>>>df.loc[df['A'].isin(df['B'])]ABCDE.E0ef010101db2892cc4683bd647下面使用query()来实现。>>>df.query("AinB")ABCDE.E0ef010101db2892cc4683bd647可以看到使用query后的代码简单易懂,而且消耗更少的内存。多条件查询选择所有A列字母出现在B列,且C列小于D列的行。>>>df.query('AinBandC>>number=5>>>df.query('AinB&C>@number')ABCDE.E3bd647索引选择选择A列的字母出现在B列,索引较大所有行都大于2。>>>df.query('AinBandindex>2')ABCDE.E3bd647多索引选择创建一个具有两级索引的DataFrame。>>>importnumpyasnp>>>colors=['yellow']*3+['red']*2>>>rank=[str(i)foriinrange(5)]>>>index=pd.MultiIndex.from_arrays([colors,rank],names=['color','rank'])>>>df=pd.DataFrame(np.arange(10).reshape(5,2),列=['A','B'],index=index)>>>df=pd.DataFrame(np.arange(10).reshape(5,2),columns=['A','B'],index=index)>>>dfABcolorrankyellow00111233245red36774891有多级索引名称时,直接选择。>>>df.query("color=='red'")一个Bcolorrankred3674892。当有多层未命名索引时,按索引级别选择。>>>df.index.names=[None,None]>>>df.query("ilevel_0=='red'")品种367489>>>df.query("ilevel_1=='4'")ABred489特殊字符对于列名中间的空格或运算符等其他特殊符号,需要使用反引号``。>>>df.query('A==B|(C+2>`E.E`)')ABCDE.E2cc4683bd6474ae826总的来说,query()的用法比较简单,可以很快上手,代码的可读性也提高了很多。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。