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

在这里插入图片描述

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\\***\\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()方法具有优势,能够优化代码。

3.3.4 同一列的多个取值

print(df.query("市场 in ['亚太地区','非洲']"))

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值