1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Pandas的iloc loc ix的区别

Pandas的iloc loc ix的区别

时间:2019-04-26 11:31:27

相关推荐

Pandas的iloc loc ix的区别

(作者:陈玓玏)

1、例子

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

import pandas as pddata = [['自有房',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]+5data.iloc[0,1] = data.iloc[0,1]+5data.loc['lc','age'] = data.loc['lc','age']+5data.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只接受位置索引。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。