pandas条件复合筛选(多条件、与、或)
·
pandas条件复合筛选(多条件、与、或)
数据分析工作中,Python第三方包pandas功能非常强大,其组合筛选功能比excel速度快很多。这里记录一下pandas的组合筛选功能。
或筛选
或筛选使用的符号是"|"
举个例子:
import faker
import pandas as pd
# 生成假数据
fake = faker.Faker(locale='zh_CN')
names = []
address = []
# province = []
city = []
job = []
for i in range(10000):
names.append(fake.name())
address.append(fake.address())
# province.append(fake.province())
city.append(fake.city())
job.append(fake.job())
data = [[names[i], city[i], job[i]] for i in range(10000)]
data = pd.DataFrame(data, columns=["姓名", "城市", "职业"])
# 或筛选实例
select_or = data[(data["城市"] == "北京市") | (data["城市"] == "上海市")]
这样可以筛选出北京和上海的人员信息,前五行如下:
姓名 城市 职业
9 廖杨 上海市 活动执行
79 高楠 上海市 其他语种翻译
243 封桂香 上海市 财务助理/文员
329 杨刚 北京市 标准化工程师
473 黄军 北京市 电信交换工程师
上面这种情况适用于条件比较少的筛选,条件和条件之间需要使用括号,因为"|“优先级高于”=="
如果条件比较多,比如需要选择100个城市,该怎么选,可以参考下面的方法:
select_city = ["上海市", "天津市", "北京市", "重庆市"]
df = pd.DataFrame(columns=data.columns)
for i in select_city:
df = df.append(data[data["城市"] == i])
把条件放入列表中(select_city),然后循环生成新的dataframe,依次append即可
与筛选
与筛选用到的情况比或筛选多,使用"&"符号
举个例子:
select_and = data[(data["城市"] == "北京市") & (data["职业"] == "科研")]
print(select_and)
"""
姓名 城市 职业
608 李平 北京市 科研
"""
更多条件的与筛选后面再记录吧
更多推荐
已为社区贡献3条内容
所有评论(0)