Python学习之:pandas 索引 loc,iloc ;数据过滤和筛选

import pandas as pd
columns = ['name','age','sex']
data = [['wang',15,'male'],
        ['li',20,'female']]
df = pd.DataFrame(data=data,columns=columns)
df
nameagesex
0wang15male
1li20female

bool 过滤数据

df.sex =='male'
0     True
1    False
Name: sex, dtype: bool
# 使用 bool 值来决定 df 内的所有值
df[df.sex == "male"] = 1
df
nameagesex
0111
1li20female
# 整体替换 index 
df.index = ['student1','student2']
df
nameagesex
student1wang15male
student2li20female

loc 索引

# 索引使用了字符串,没有使用列表,返回的数据是 series 形式
df.loc['student1']
name    wang
age       15
sex     male
Name: student1, dtype: object
# loc 里面先行后列索引
df.loc['student1',['name','sex']]
name    wang
sex     male
Name: student1, dtype: object
# 只要索引的时候,行索引和列索引都使用列表的形式,输出的就是个 DataFrame
# 如果一个不使用列表,那么整体就是个 Series
df.loc[['student1'],['name','sex']]
namesex
student1wangmale
df.loc[['student1','student2'],['name','sex']]
namesex
student1wangmale
student2lifemale

iloc 索引

# index_loc的 索引方式
df.iloc[0,[0,2]]
name    wang
sex     male
Name: student1, dtype: object
df.iloc[[0,1],[0,2]]
namesex
student1wangmale
student2lifemale
columns = ['id','age','sex']
data = [[13281,15,1],
        [11111,20,0],
       [2222,18,1],
       [543232,9,0]]
df = pd.DataFrame(data=data,columns=columns)
df.index = ['student1','student2','student3','student4']
df
idagesex
student113281151
student211111200
student32222181
student454323290
# 行列都是切片索引返回也是 DataFrame,因为切片的本质还是列表
# 相当于 行列都用列表索引
df.iloc[:2,1:3]
agesex
student1151
student2200

数据过滤和筛选

# 因为 df.iloc[:2,1:3] 返回是一个 DataFrame 因此可以继续根据 bool 方式进行过滤
df.iloc[:2,1:3][df.sex == 0]
D:\Anaconda3\envs\data\lib\site-packages\ipykernel_launcher.py:2: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
agesex
student2200
df.loc['student1':'student3',['age','sex']][df.sex==1]
D:\Anaconda3\envs\data\lib\site-packages\ipykernel_launcher.py:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  """Entry point for launching an IPython kernel.
agesex
student1151
student3181

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值