Pandas的iloc、loc、ix的区别

(作者:陈玓玏)

1、例子

取DataFrame的部分数据,或者修改部分数据是非常非常常见的操作,但是实际应用中,到底使用ix方法,还是iloc方法,还是loc方法,还需要讨论。请看下面的实验:

import pandas as pd

data = [['自有房',40,50000],
        ['无自有房',22,13000],
        ['自有房',30,30000]]

data = pd.DataFrame(data,index=['lc','cc','lbb'],columns=['house','age','income'])

df = data.ix[0,1]
df = data.iloc[0,1]
df = data.loc['lc','age']
# df = data.loc[0,'age']   #报错
# df = data.iloc[0,'age']  #报错
df = data.ix[0,'age']

df = data.ix[data['age']>=30]
df = data.ix[data['age']>=30,0]

# df = data.iloc[data['age']>=30,0]  #报错
# df = data.iloc[data['age']>=30]   #报错
df = data.loc[data['age']>=30]
df = data.loc[data['age']>=30,'age']

df = data[data['age']>=30]
# df = data[data['age']>=30,'age']    #报错
df = data[data['age']>=30]['age']

print(df)

data.ix[0,1] = data.ix[0,1]+5
data.iloc[0,1] = data.iloc[0,1]+5
data.loc['lc','age'] = data.loc['lc','age']+5

data.ix[0,'age'] = data.ix[0,1]+5
# data.iloc[0,'age'] = data.iloc[0,1]+5  #报错
data.loc[0,'age'] = data.loc['lc','age']+5   #会新增一行索引为0的行,且age为lc行age+5,但另外两列为空值

print(data)

2、总结

通过实验结果其实就可以看出来了,结论如下:
1、ix可以接受 位置索引和name索引,且行和列不必都是位置或name,但是Pycharm有提示过我ix方法要被抛弃了,最好不用;
2、loc是基于 name索引 的,如果你行或列其中一个用了位置索引,它会报index错误的,但是如果你是赋值给它,它会默认新增一行一列的;
3、iloc是基于 位置索引的,如果你行或列其中一个用了name索引,也是会报index错误的,而且赋值也不行;
4、这三种方法 都可以添加条件进行过滤

综上所述,三种方法的功能都是取数,且都具有过滤功能,只是ix可以接受位置和name两种形式的索引,loc只接受name形式,而iloc只接受位置索引。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值