DataFrame.query()--Pandas

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`'))

DataFrame.query()--Pandas_第1张图片

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)

DataFrame.query()--Pandas_第2张图片

3.3 实例数据查询

df = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\全球超市订单数据.xlsx',
                   usecols=['行 ID', '订购日期', '细分市场', '市场', '类别', '数量'],
                   nrows=1000)
print(df)

DataFrame.query()--Pandas_第3张图片

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)

DataFrame.query()--Pandas_第4张图片
DataFrame.query()--Pandas_第5张图片

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)

DataFrame.query()--Pandas_第6张图片
可以看出在进行多条件查询时,query()方法具有优势,能够优化代码。

你可能感兴趣的:(Pandas,pandas)