在python进行人工智能编程中,对于DataFrame类型数据的操作和表达,经常用loc和iloc两种函数从数据集中取数,但经常会发生混淆,因此根据详细比较结果,分享一篇心得。
目录
一、构建DataFrame类型数据
import numpy as np
import pandas as pd
data = np.arange(0, 50, 2)
data1 = data.reshape(5, 5)
data2 = pd.DataFrame(data1, columns=['a', 'b', 'c','d','e'])
1、表达某一个数
iloc: data2.iloc[2,2]
loc: data2.loc[2,'c']
2、表达某一行 iloc: data2.iloc[2] loc: data2.loc[2] 3、表达多行 iloc: data2.iloc[1:5] #左闭右开 loc: data2.loc[1:4] #左闭右闭 4、表达一列 iloc: data2.iloc[:,1:2] loc: data2.loc[:,'a'] 5、表达多列 iloc: data2.iloc[:,1:4] data2.iloc[:,[1,2,3]] loc: data2.loc[:,['b',‘c',’d']] data2.loc[:,'b':'d'] 6)、表达不连续某几行,某几列 iloc: data2.iloc[[1,2,4],[1,3]] loc: data2.loc[[1,2,4],['b',‘d']] 7、表达不连续的某几行 iloc: data2.iloc[[1,2,4],:] loc: data2.loc[[1,2,4],:] 8、表达不连续的某几列 iloc: data2.iloc[:,[0,2]] loc: data2.loc[:,['a','c']] 三、总结 1、iloc的列不能用列标签;loc的列只能用列标签,不能用索引或切片,除非用全切片 2、两者都可以表达各种情况; 3、两者不管表达行,还是列,使用切片时,都是loc左闭右闭,iloc左闭右开;
作者github:luquanmin (github.com)https://github.com/luquanmin