pandas数据的高级逻辑查询操作query

代码示例:

import pandas as pd

#读取文件
df = pd.read_csv('./TianQi.csv')
#字符串替换和类型转换
df['最高温度'] = df['最高温度'].str.replace('℃','').astype('int32')
df.loc[:,'最低温度'] = df['最低温度'].str.replace('℃','').astype('int32')

#编写取值条件字符串。
qstr =  "(25<最高温度<30)"
#获取最高温度范围  25<最高温度<30,为了方便查看只显示5条
print(df.query(qstr).head())
'''
打印:
            日期  最高温度  最低温度    天气   风向  风级  空气质量
93    2019/4/4    28     9    多云  西北风  3级  轻度污染
104  2019/4/15    26    11    多云  西南风  2级     良
105  2019/4/16    26    12     晴  东南风  2级     良
106  2019/4/17    28    16  霾~多云  西南风  3级  轻度污染
111  2019/4/22    26    15  晴~多云  西南风  2级  轻度污染
'''
qstr1 =  "(25<最高温度<30) and (天气 =='晴')"
#获取最高温度范围  25<最高温度<30,且天气为晴的条目,为了方便查看只显示5条
print(df.query(qstr1).head())
'''
打印:
            日期  最高温度  最低温度 天气   风向  风级 空气质量
105  2019/4/16    26    12  晴  东南风  2级    良
120   2019/5/1    27    10  晴  西北风  2级    优
132  2019/5/13    26    12  晴  西南风  3级    良
139  2019/5/20    26    13  晴  西北风  4级    优
146  2019/5/27    29    15  晴  西北风  3级    优
'''

#带变量条件的书写,加@符号
my_mean = df['最高温度'].mean()
qstr2="最高温度>@my_mean"
#获取最高温度范围  大于平均温度,为了方便查看只显示5条
print(df.query(qstr2).head())
'''
打印:
           日期  最高温度  最低温度    天气   风向  风级  空气质量
75  2019/3/17    20     4     晴  西南风  2级     良
76  2019/3/18    21     6  多云~晴  东南风  1级  轻度污染
77  2019/3/19    25    11    多云  西南风  2级  中度污染
83  2019/3/25    22     5     晴  西北风  2级     良
85  2019/3/27    21     4    多云  东北风  2级  轻度污染
'''

猜你喜欢

转载自blog.csdn.net/caoxinjian423/article/details/112980783