Pandas筛选之_ .isin()

1
2
3
4
5
6
7
8
import pandas as pd
import re, os, random

file = r"D:\Stock\allstocks.csv"

data = pd.read_csv(file, dtype={'code': str})
data.sample(3)

output:

code name sind ind
1379 sz.300987 川网传媒 数字媒体 传媒
2240 sh.603087 甘李药业 其他生物制品 生物制品
3341 sz.000543 皖能电力 火电 电力

.isin()

  1. .isin() 方法可以同时判断数据是否与列表中的多个值相等,只要与列表中的某一个值相等则返回True,否则返回False
  2. 接受的是一个列表、字典、Series、Df
  3. 反函数是在之前加上 ~
1
2
data[data['ind'].isin(['化工合成材料', '化学制药'])]

output:

code name sind ind
390 sz.000420 吉林化纤 粘胶 化工合成材料
391 sh.600889 南京化纤 粘胶 化工合成材料
414 sz.301277 新天地 原料药 化学制药
415 sz.301258 富士莱 原料药 化学制药
416 sz.301211 亨迪药业 原料药 化学制药
... ... ... ... ...
4347 sh.603225 新凤鸣 涤纶 化工合成材料
4348 sh.601233 桐昆股份 涤纶 化工合成材料
4658 sz.002254 泰和新材 氨纶 化工合成材料
4659 sz.002064 华峰化学 氨纶 化工合成材料
4660 sz.000949 新乡化纤 氨纶 化工合成材料

242 rows × 4 columns

1
2
3
4
5
# .isin(Series)
sr1 = data.sind.sample(1)
sr1

data[data['sind'].isin(sr1)]
3745    光伏设备
Name: sind, dtype: object

output:

code name sind ind
3712 sz.301278 快可电子 光伏设备 电力设备
3713 sz.301266 宇邦新材 光伏设备 电力设备
3714 sz.301168 通灵股份 光伏设备 电力设备
3715 sz.300842 帝科股份 光伏设备 电力设备
3716 sz.300827 上能电气 光伏设备 电力设备
3717 sz.300776 帝尔激光 光伏设备 电力设备
3718 sz.300763 锦浪科技 光伏设备 电力设备
3719 sz.300751 迈为股份 光伏设备 电力设备
3720 sz.300724 捷佳伟创 光伏设备 电力设备
3721 sz.300393 中来股份 光伏设备 电力设备
3722 sz.300316 晶盛机电 光伏设备 电力设备
3723 sz.300274 阳光电源 光伏设备 电力设备
3724 sz.300125 聆达股份 光伏设备 电力设备
3725 sz.300118 东方日升 光伏设备 电力设备
3726 sz.300080 易成新能 光伏设备 电力设备
3727 sz.003022 联泓新科 光伏设备 电力设备
3728 sz.002865 钧达股份 光伏设备 电力设备
3729 sz.002623 亚玛顿 光伏设备 电力设备
3730 sz.002610 爱康科技 光伏设备 电力设备
3731 sz.002506 协鑫集成 光伏设备 电力设备
3732 sz.002459 晶澳科技 光伏设备 电力设备
3733 sz.002218 拓日新能 光伏设备 电力设备
3734 sz.002129 TCL中环 光伏设备 电力设备
3735 sz.001269 欧晶科技 光伏设备 电力设备
3736 sz.000821 京山轻机 光伏设备 电力设备
3737 sh.688680 海优新材 光伏设备 电力设备
3738 sh.688599 天合光能 光伏设备 电力设备
3739 sh.688598 金博股份 光伏设备 电力设备
3740 sh.688560 明冠新材 光伏设备 电力设备
3741 sh.688556 高测股份 光伏设备 电力设备
3742 sh.688516 奥特维 光伏设备 电力设备
3743 sh.688503 聚和材料 光伏设备 电力设备
3744 sh.688408 中信博 光伏设备 电力设备
3745 sh.688390 固德威 光伏设备 电力设备
3746 sh.688348 昱能科技 光伏设备 电力设备
3747 sh.688303 大全能源 光伏设备 电力设备
3748 sh.688223 晶科能源 光伏设备 电力设备
3749 sh.688147 微导纳米 光伏设备 电力设备
3750 sh.688032 禾迈股份 光伏设备 电力设备
3751 sh.603806 福斯特 光伏设备 电力设备
3752 sh.603628 清源股份 光伏设备 电力设备
3753 sh.603396 金辰股份 光伏设备 电力设备
3754 sh.603212 赛伍技术 光伏设备 电力设备
3755 sh.603185 上机数控 光伏设备 电力设备
3756 sh.601865 福莱特 光伏设备 电力设备
3757 sh.601012 隆基绿能 光伏设备 电力设备
3758 sh.600876 凯盛新能 光伏设备 电力设备
3759 sh.600732 爱旭股份 光伏设备 电力设备
3760 sh.600537 亿晶光电 光伏设备 电力设备
3761 sh.600438 通威股份 光伏设备 电力设备
3762 sh.600207 安彩高科 光伏设备 电力设备
3763 sh.600151 航天机电 光伏设备 电力设备
1
2
3
4
5
6
7
# .isin(Series)
sr1 = data.sind.sample(3)
# sr1
sr2 = data.ind.sample(3)
# sr2

data[data['sind'].isin(sr1) & data['ind'].isin(sr2)]

output:

code name sind ind
167 sz.002314 南山控股 住宅开发 房地产开发
168 sz.002244 滨江集团 住宅开发 房地产开发
169 sz.002208 合肥城建 住宅开发 房地产开发
170 sz.002146 荣盛发展 住宅开发 房地产开发
171 sz.002133 广宇集团 住宅开发 房地产开发
... ... ... ... ...
245 sh.600094 大名城 住宅开发 房地产开发
246 sh.600077 宋都股份 住宅开发 房地产开发
247 sh.600067 冠城大通 住宅开发 房地产开发
248 sh.600064 南京高科 住宅开发 房地产开发
249 sh.600048 保利发展 住宅开发 房地产开发

83 rows × 4 columns

1
2
3
4
5
# .isin(dict)
# .any(axis=1)

dct = {'sind': ['软件开发', 'IT服务'], 'ind': ['计算机应用']}
data[data.isin(dct).any(axis=1)]

output:

code name sind ind
1545 sz.301270 汉仪股份 软件开发 计算机应用
1546 sz.301269 华大九天 软件开发 计算机应用
1547 sz.301195 北路智控 软件开发 计算机应用
1548 sz.301185 鸥玛软件 软件开发 计算机应用
1549 sz.301162 国能日新 软件开发 计算机应用
... ... ... ... ...
4811 sh.600446 金证股份 IT服务 计算机应用
4812 sh.600410 华胜天成 IT服务 计算机应用
4813 sh.600271 航天信息 IT服务 计算机应用
4814 sh.600225 卓朗科技 IT服务 计算机应用
4815 sh.600131 国网信通 IT服务 计算机应用

240 rows × 4 columns

1
2
3
4
5
6
# 多列同时操作
# .any(axis=1), all(axis=1)

data[data[['code', 'ind']].isin(['sz.002616', 'sh.600163', '电力',
'计算机应用']).any(axis=1)]

output:

code name sind ind
833 sz.300317 珈伟新能 新能源发电 电力
834 sz.003816 中国广核 新能源发电 电力
835 sz.002617 露笑科技 新能源发电 电力
836 sz.002616 长青集团 新能源发电 电力
837 sz.002480 新筑股份 新能源发电 电力
... ... ... ... ...
4811 sh.600446 金证股份 IT服务 计算机应用
4812 sh.600410 华胜天成 IT服务 计算机应用
4813 sh.600271 航天信息 IT服务 计算机应用
4814 sh.600225 卓朗科技 IT服务 计算机应用
4815 sh.600131 国网信通 IT服务 计算机应用

331 rows × 4 columns

1
2
3
4
5
6
# 多列同时操作
# .any(axis=1), all(axis=1)

data[data[['code', 'ind']].isin(['sz.002616', 'sh.600163', '电力',
'计算机应用']).all(axis=1)]

output:

code name sind ind
836 sz.002616 长青集团 新能源发电 电力
857 sh.600163 中闽能源 新能源发电 电力
1
2
3
4
# 反函数用法
data[~data['ind'].
isin(['计算机应用', '环保', '综合', '光学光电子', '化工合成材料', '景点及旅游', '饮料制造', '零售'])]

output:

code name sind ind
62 sz.301098 金埔园林 装饰园林 建筑装饰
63 sz.300949 奥雅股份 装饰园林 建筑装饰
64 sz.300649 杭州园林 装饰园林 建筑装饰
65 sz.300621 维业股份 装饰园林 建筑装饰
66 sz.300536 农尚环境 装饰园林 建筑装饰
... ... ... ... ...
4593 sh.688233 神工股份 半导体材料 半导体及元件
4594 sh.688138 清溢光电 半导体材料 半导体及元件
4595 sh.688126 沪硅产业-U 半导体材料 半导体及元件
4596 sh.605358 立昂微 半导体材料 半导体及元件
4597 sh.600206 有研新材 半导体材料 半导体及元件

4096 rows × 4 columns