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  李平  北京市  科研
"""

更多条件的与筛选后面再记录吧

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐