python pandas dataframe 行列选择,切片操作方法
SQL中的select是根据列的名称来选取;Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:
1)loc,基于列label,可选取特定行(根据行index);
2)iloc,基于行/列的position;
3)at,根据指定行index及列label,快速定位DataFrame的元素;
4)iat,与at类似,不同的是根据position来定位的;
5)ix,为loc与iloc的混合体,既支持label也支持position;
实例
importpandasaspd importnumpyasnp df=pd.DataFrame({'total_bill':[16.99,10.34,23.68,23.68,24.59], 'tip':[1.01,1.66,3.50,3.31,3.61], 'sex':['Female','Male','Male','Male','Female']}) #datatypeofcolumns printdf.dtypes #indexes printdf.index #returnpandas.Index printdf.columns #eachrow,returnarray[array] printdf.values printdf
sexobject tipfloat64 total_billfloat64 dtype:object RangeIndex(start=0,stop=5,step=1) Index([u'sex',u'tip',u'total_bill'],dtype='object') [['Female'1.0116.99] ['Male'1.6610.34] ['Male'3.523.68] ['Male'3.3123.68] ['Female'3.6124.59]] sextiptotal_bill 0Female1.0116.99 1Male1.6610.34 2Male3.5023.68 3Male3.3123.68 4Female3.6124.59
printdf.loc[1:3,['total_bill','tip']] printdf.loc[1:3,'tip':'total_bill'] printdf.iloc[1:3,[1,2]] printdf.iloc[1:3,1:3]
total_billtip 110.341.66 223.683.50 323.683.31 tiptotal_bill 11.6610.34 23.5023.68 33.3123.68 tiptotal_bill 11.6610.34 23.5023.68 tiptotal_bill 11.6610.34 23.5023.68
错误的表示:
printdf.loc[1:3,[2,3]]#.loc仅支持列名操作
KeyError:'Noneof[[2,3]]areinthe[columns]'
printdf.loc[[2,3]]#.loc可以不加列名,则是行选择
sextiptotal_bill 2Male3.5023.68 3Male3.3123.68
printdf.iloc[1:3]#.iloc可以不加第几列,则是行选择
sextiptotal_bill 1Male1.6610.34 2Male3.5023.68
printdf.iloc[1:3,'tip':'total_bill']
TypeError:cannotdosliceindexingonwiththeseindexers[tip]of
printdf.at[3,'tip'] printdf.iat[3,1] printdf.ix[1:3,[1,2]] printdf.ix[1:3,['total_bill','tip']]
3.31 3.31 tiptotal_bill 11.6610.34 23.5023.68 33.3123.68 total_billtip 110.341.66 223.683.50 323.683.31
printdf.ix[[1,2]]#行选择
sextiptotal_bill 1Male1.6610.34 2Male3.5023.68
printdf[1:3] printdf[['total_bill','tip']] #printdf[1:2,['total_bill','tip']]#TypeError:unhashabletype
sextiptotal_bill 1Male1.6610.34 2Male3.5023.68 total_billtip 016.991.01 110.341.66 223.683.50 323.683.31 424.593.61
printdf[1:3,1:2]
TypeError:unhashabletype
总结
1).loc,.iloc,.ix,只加第一个参数如.loc([1,2]),.iloc([2:3]),.ix[2]…则进行的是行选择
2).loc,.at,选列是只能是列名,不能是position
3).iloc,.iat,选列是只能是position,不能是列名
4)df[]只能进行行选择,或列选择,不能同时进行列选择,列选择只能是列名。
以上这篇pythonpandasdataframe行列选择,切片操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。