Pandas筛选之.str.contains()

1
2
3
4
5
6
import pandas as pd

url = "https://www.icauto.com.cn/rank/"

data = pd.read_html(url, index_col=0, header=0)[0]
data.head()

output:

车型 资料信息 月销量 年累计
#
1 Model Y 品牌:特斯拉,指导价:26.39-34.99万 41428 320109
2 秦PLUS 品牌:比亚迪,指导价:9.98-20.99万 39904 317115
3 宋PLUS新能源 品牌:比亚迪,指导价:15.38-21.98万 36773 276140
4 海鸥 品牌:比亚迪,指导价:7.88-9.58万 35011 119828
5 朗逸 品牌:大众,指导价:9.40-15.19万 32105 246656

.str.contains()

  1. 字符串中包含
  2. 可以使用模糊
  3. 可以使用正则
  4. 仅对字符串格式有效,对数字列不能使用,如果要对数字格式列使用,需要先将其转化成str
1
2
3
4
5
6
7
8
9
10
11
'''
语法:
Series.str.contains(
pat, # 要查询的字符串、要查询的或者正则表达式
case=True, # 区分大小写
flags=0, # 用来传给正则模块的参数,比如 flags=re.INGNORECASE 等价于 case=False
na=nan, # 默认对空值不处理,即输出结果还是 NaN
regex=True # 即第一个参数 pat部分 要不要按照正则表达式的规则。所以针对特殊符号,默认情况下我们必须使用转义符,或者设置 regex=False
)

'''
1
data[data['资料信息'].str.contains('比亚迪')]

output:

车型 资料信息 月销量 年累计
#
2 秦PLUS 品牌:比亚迪,指导价:9.98-20.99万 39904 317115
3 宋PLUS新能源 品牌:比亚迪,指导价:15.38-21.98万 36773 276140
4 海鸥 品牌:比亚迪,指导价:7.88-9.58万 35011 119828
7 元PLUS 品牌:比亚迪,指导价:13.28-15.98万 28727 217670
10 海豚 品牌:比亚迪,指导价:11.68-13.98万 24282 221579
14 品牌:比亚迪,指导价:18.98-33.18万 21798 166436
18 宋Pro新能源 品牌:比亚迪,指导价:12.98-16.98万 20798 140211
50 唐新能源 品牌:比亚迪,指导价:20.98-34.28万 11366 105694
82 驱逐舰05 品牌:比亚迪,指导价:10.18-14.88万 7950 62832
144 海豹DM-i 品牌:比亚迪,指导价:18.68-25.00万 3890 3890
157 海豹 品牌:比亚迪,指导价:18.98-28.00万 3401 53361
167 护卫舰07 品牌:比亚迪,指导价:21.58-28.00万 3085 56298
209 比亚迪e2 品牌:比亚迪,指导价:10.28-14.78万 2106 14695
211 秦新能源 品牌:比亚迪,指导价:12.99-17.48万 2070 23118
215 元Pro 品牌:比亚迪,指导价:9.98-11.98万 1996 7104
350 比亚迪e6 品牌:比亚迪,指导价:0.00万 662 1391
386 宋MAX新能源 品牌:比亚迪,指导价:14.68-17.28万 436 3679
450 比亚迪e3 品牌:比亚迪,指导价:14.98-15.48万 211 1178
479 比亚迪D1 品牌:比亚迪,指导价:15.78-16.98万 114 583
1
2
# 筛选品牌  特斯拉、极氪、极狐、阿维塔、高合
data[data['资料信息'].str.contains('极氪|特斯拉|高合|极狐|阿维塔')]

output:

车型 资料信息 月销量 年累计
#
1 Model Y 品牌:特斯拉,指导价:26.39-34.99万 41428 320109
72 极氪001 品牌:极氪,指导价:30.00-40.30万 8701 52998
210 Model 3 品牌:特斯拉,指导价:25.99-29.59万 2079 113620
229 极氪X 品牌:极氪,指导价:18.98-22.98万 1725 12675
237 阿维塔11 品牌:阿维塔,指导价:30.00-60.00万 1659 14744
239 极氪009 品牌:极氪,指导价:49.90-58.80万 1627 13355
241 高合HiPhi Y 品牌:高合汽车,指导价:33.90-44.90万 1556 1556
254 极狐考拉 品牌:ARCFOX极狐,指导价:13.38-17.18万 1405 1612
270 极狐 阿尔法S(ARCFOX αS) 品牌:ARCFOX极狐,指导价:18.98-35.63万 1245 9307
401 极狐 阿尔法T(ARCFOX αT) 品牌:ARCFOX极狐,指导价:18.58-33.13万 355 4137
466 高合HiPhi Z 品牌:高合汽车,指导价:60.00-80.00万 154 154
531 高合HiPhi X 品牌:高合汽车,指导价:57.00-80.00万 25 25
1
2
3
#筛选起售价60万元的
data[data['资料信息'].str.contains('[6-9]\d+\.\d+\-\d+', regex=True)]

output:

车型 资料信息 月销量 年累计
#
78 宝马X5 品牌:宝马,指导价:60.50-80.00万 8266 72738
466 高合HiPhi Z 品牌:高合汽车,指导价:60.00-80.00万 154 154
1
2
#筛选起售价<10万元的,最高价不超过20
data[data['资料信息'].str.contains('\D+.\.\d+\-[1]+', regex=True)]

output:

车型 资料信息 月销量 年累计
#
5 朗逸 品牌:大众,指导价:9.40-15.19万 32105 246656
6 轩逸 品牌:日产,指导价:9.98-17.49万 30028 257065
11 哈弗H6 品牌:哈弗,指导价:9.89-15.70万 23423 147596
33 新帝豪 品牌:吉利汽车,指导价:6.29-12.98万 14058 102970
36 科鲁泽 品牌:雪佛兰,指导价:9.49-10.89万 13665 90999
... ... ... ... ...
552 无界PRO 品牌:奇瑞新能源,指导价:7.99-10.19万 12 822
563 宝骏RC-5 品牌:宝骏,指导价:6.98-11.08万 6 396
570 标致301 品牌:标致,指导价:8.47-10.77万 4 4
583 悦动 品牌:现代,指导价:8.49-11.59万 1 7704
587 宝骏RM-5 品牌:宝骏,指导价:7.88-12.08万 1 35

67 rows × 4 columns

1
2
3
# 如果要对数字格式列使用,需要先将其转化成str
# 到年累计列进行筛选.年累计超过20万的
data[data['年累计'].astype(str).str.contains('[2-9][0-9]{5,}', regex=True)]

output:

车型 资料信息 月销量 年累计
#
1 Model Y 品牌:特斯拉,指导价:26.39-34.99万 41428 320109
2 秦PLUS 品牌:比亚迪,指导价:9.98-20.99万 39904 317115
3 宋PLUS新能源 品牌:比亚迪,指导价:15.38-21.98万 36773 276140
5 朗逸 品牌:大众,指导价:9.40-15.19万 32105 246656
6 轩逸 品牌:日产,指导价:9.98-17.49万 30028 257065
7 元PLUS 品牌:比亚迪,指导价:13.28-15.98万 28727 217670
10 海豚 品牌:比亚迪,指导价:11.68-13.98万 24282 221579