dataframe数据结构之数据的筛选

导入模块

import pandas as pd

案例数据

my_dict = {
    '姓名':
    ['张三','李四','王二','六月','北海'],
    '年龄':
    [23,27,26,22,18],
    '性别':
    ['男','女','女','男','男'],
    '工作':
    ['剪辑师','蛋糕师','消防员','程序员','辅导员'],
    '工龄':
    [2,3,3,2,0]}
df = pd.DataFrame(data=my_dict, columns=['姓名', '年龄', '性别', '工作', '工龄'])
df

image

借助索引的筛选

行的筛选

df[1:4] # 筛选出第2行到第4行的数据,左闭右开。

image

列的筛选

df[['姓名','工作']]

image

df[['姓名','工作']][1:4]

行与列的筛选

df[1:4][['姓名','工作']] # 等价于:df[['姓名','工作']][1:4]

image

借助.loc函数,标签的筛选

行的筛选

df.loc[2:4] # 筛选出:行标签从2到4所有行数据,左闭右闭。

image

列的筛选

df.loc[:,['姓名','年龄']] # 仅对列筛选

image

行与列的筛选

df.loc[1:3,['姓名','年龄']] # 第一个参数中:{1:3指的是索引为1~3的行,左闭右闭}。

image

df.loc[[1,2,4],['姓名','年龄']] # 第一个参数中:[1,2,4]代表了指定行的标签。

image

按照条件筛选行数据

df.loc[df['年龄']==27] # 单纯地按条件筛选。

image

df.loc[df['年龄']==27, ['工作', '工龄']] # 进一步限制显示的列。

image

多条件筛选行数据

df.loc[(df['年龄']==27) | (df['性别']=='男'), ['工作', '工龄', '性别']]

image

借助.iloc函数,索引的筛选

行的筛选

df.iloc[1:3] # 左闭右开。行索引从0开始,所以会显示第2行到第3行的数据。

image

列的筛选

df.iloc[:,1:4] # 列索引从0开始。索引会筛选第2列到第4列的数据。

image

行与列的筛选

df.iloc[1:3,1:4] # 先选择第2行到第3行的数据,在此基础上再筛选第2列到第4列的数据。

image

df.iloc[[1,3,4],[2,3]] # 先筛选出索引为1,3,4的行数据,然后在此基础上再筛选出列索引为2和3的列。

image

df.iloc[[1,3,4],1:4]

image

df.iloc[1:3,[2,3]]

image

posted @ 2023-01-06 00:14  顺心无忧  阅读(151)  评论(0编辑  收藏  举报