行列选择
以如下数据为例:
import pandas as pd
df = pd.DataFrame({'A':[1,2,3,7,8,9],'B':[4,5,6,8,9,5],'C':[7,8,10,3,7,7]},index=['a','b','c','d','e','f'])
目前已掌握三种行列筛选的方法:iloc()、loc()、ix()。其共同点是:
1、用[,]表示筛选范围,逗号前为行的选择,逗号后为列的选择。
#筛选A/B两列的前五行
print('--------------------------------------iloc方法---------------------------------------------------')
#iloc方法
print(df.iloc[:5,[0,1]])
print('-------------------------------------loc方法----------------------------------------------------')
#loc方法
print(df.loc[['a','b','c','d','e'],['A','B']])
print('-------------------------------------ix方法----------------------------------------------------')
#ix方法
print(df.ix[:5,['A','B']])
2、只筛选行,可以不使用逗号。
#筛选前五行
print('--------------------------------------iloc方法---------------------------------------------------')
#iloc方法
print(df.iloc[:5])
print('-------------------------------------loc方法----------------------------------------------------')
#loc方法
print(df.loc[['a','b','c','d','e']])
print('-------------------------------------ix方法----------------------------------------------------')
#ix方法
print(df.ix[:5])
3、只筛选列,需在逗号前用冒号表示。
#筛选A/B两列
print('--------------------------------------iloc方法---------------------------------------------------')
#iloc方法
print(df.iloc[:,[0,1]])
print('-------------------------------------loc方法----------------------------------------------------')
#loc方法
print(df.loc[:,['A','B']])
print('-------------------------------------ix方法----------------------------------------------------')
#ix方法
print(df.ix[:,['A','B']])
4、连续取值可以用[n:m]表示,n表示首行(列),m表示尾行(列),含义为取n行(列)到m行(列)。
#筛选1-4行以及1-2列
print('--------------------------------------iloc方法---------------------------------------------------')
#iloc方法
print(df.iloc[:4,:2])
print('-------------------------------------loc方法----------------------------------------------------')
#loc方法
print(df.loc['a':'d',['A','B']])
print('-------------------------------------ix方法----------------------------------------------------')
#ix方法
print(df.ix[:4,['A','B']])
5、非连续取值可以使用[n,m]表示,即取出n行(列)和m行(列)。
#筛选第1行和第4行的A列数据
print('--------------------------------------iloc方法---------------------------------------------------')
#iloc方法
print(df.iloc[[0,3],0])
print('-------------------------------------loc方法----------------------------------------------------')
#loc方法
print(df.loc[['a','d'],'A'])
print('-------------------------------------ix方法----------------------------------------------------')
#ix方法
print(df.ix[[0,3],'A'])
其区别在于:
loc函数
loc()函数是基于标签的数据选择方法,这意味着我们必须传递我们想要选择的
行或列的名称
。与iloc()不同的是,这个方法包括了它所传递的范围的最后一个元素。loc()可以接受布尔数据,与iloc()不同。
#筛选出A列大于5的B/C列数据
df.loc[df['A']>5,['B','C']]
iloc()函数
iloc()函数是一个基于索引的选择方法,这意味着我们必须在该方法中传递一个
整数索引
来选择一个特定的行/列。与loc()不同的是,该方法不包括所传递范围的最后一个元素。iloc()不接受布尔数据,与loc()不同。
ix()函数
该方法接受索引和行列名称来选择特定的行列
以下是筛选出符合条件的n列n列的几个示例
(1)取出符合条件的数据all行列
df[df["age"]==12]
(2)取出符合条件的数据的指定列
df[df["age"]==12][["age","name"]]
(3)取出符合多个条件的数据
df[(df["age"]>12)|(df["name"]=="a")]
注意事项:==表示等于,&表示并且,|表示或者,单个条件需要()括起来
插入数据
(一)插入列
(1)insert方法
df.insert(loc, column, value, allow_duplicates=False)
loc 插入位置
column 待插入的列名
value 待插入的数据
allow_duplicates 是否允许重复列名,True表示待插入的列名可以与已存在列名重复
df.insert(1,'k',[1,2,3,3,5,6,7,8,9,10],allow_duplicates=True)
(2)直接以索引的方式插入最后一列
df['m']=[1,2,3,4,5,6,7,8,9,10]
(二)插入行
(1)直接以索引的方式插入最后一列
df.loc['k'] = [5.5, 'dog', 'no', 2]
删除数据
drop方法
df.drop(labels, axis=0, level=None, inplace=False, errors=‘raise’)
axis 默认删除行,axis=1删除列,axis=0删除行
(一)删除行
(1)指定列名
df=df.drop(["k","m"],axis=1)
del df['k']
(2)指定索引
df=df.drop(columns=[1,2],axis=1)
(二)删除行
(1)指定行名
df=df.drop(["k"],axis=0)
(2)指定索引
df=df.drop(df.index[[1,2]],axis=0)