1. 函数功能
Pandas 中的一个函数,用于在 DataFrame 中执行查询操作。这个方法会返回一个新的 DataFrame,其中包含符合查询条件的数据行。请注意,query 方法只能用于筛选行,而不能用于筛选列。
2. 函数语法
DataFrame.query(expr, *, inplace=False, **kwargs)
3. 函数参数
参数 | 含义 |
---|---|
expr | 查询字符串;对于不是有效python变量名的列名:如:UnitPrice(USD),需要将列名括在反引号(数字1左边键)中 |
inplace | 布尔值,决定是修改原数据框还是创建新的数据框,默认为False:创建新的数据框 |
3.1单个条件查询
df = pd.DataFrame({'A': range(1, 6),
'B': range(10, 0, -2),
'C C': range(10, 5, -1)})
print(df)
print("df.query('A>B'):\n", df.query('A>B'))
print("df.loc[df['A']>df['B'],]\n", df.loc[df['A'] > df['B'],])
print("df.query('B>= `C C`')\n", df.query('B>= `C C`'))
3.2 inplace参数
df = pd.DataFrame({'A': range(1, 6),
'B': range(10, 0, -2),
'C C': range(10, 5, -1)})
print(df)
print("df.query('A>B'):\n", df.query('A>B',inplace=True))
print('df:inplace=True\n',df)
3.3 实例数据查询
df = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\全球超市订单数据.xlsx',
usecols=['行 ID', '订购日期', '细分市场', '市场', '类别', '数量'],
nrows=1000)
print(df)
3.3.1 单个条件查询
## 1.单条件查询:市场为亚太地区
df11 = df.query("市场=='亚太地区'")
print("df11.shape:", df11.shape)
df12 = df.loc[df['市场'] == '亚太地区',]
print("df12.shape:", df12.shape)
3.3.2 多条件查询: 且:and、&
df21 = df.query("市场=='亚太地区' and 类别=='技术'")
print('df21: and', df21.shape)
df22 = df.query("市场=='亚太地区' & 类别=='技术'")
print('df22: &', df22.shape)
df23 = df.loc[(df['市场'] == '亚太地区') & (df['类别'] == '技术'),]
print('df23: loc', df23.shape)
3.3.3 多条件:或:or 、|
df31 = df.query("市场=='亚太地区' or 类别=='技术'")
print('df31: and', df31.shape)
df32 = df.query("市场=='亚太地区' | 类别=='技术'")
print('df32: &', df32.shape)
df33 = df.loc[(df['市场'] == '亚太地区') | (df['类别'] == '技术'),]
print('df33: loc', df33.shape)
print(df32)
可以看出在进行多条件查询时,query()方法具有优势,能够优化代码。