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;
import pandas as pd import numpy as np 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']}) # data type of columns print(df.dtypes) # indexes print(df.index) # return pandas.Index print(df.columns) # each row, return array[array] print(df.values) print(df) print(df.loc[1:3, ['total_bill', 'tip']]) print(df.loc[1:3, 'tip': 'total_bill']) print(df.iloc[1:3, [1, 2]]) print(df.iloc[1:3, 1: 3]) # 错误的表示: print(df.loc[1:3, [2, 3]])#.loc仅支持列名操作 print(df.loc[[2, 3]])#.loc可以不加列名,则是行选择 print(df.iloc[1:3])#.iloc可以不加第几列,则是行选择
总结
1).loc,.iloc,.ix,只加第一个参数如.loc([1,2]),.iloc([2:3]),.ix[2]…则进行的是行选择
2).loc,.at,选列是只能是列名,不能是position
3).iloc,.iat,选列是只能是position,不能是列名
4)df[]只能进行行选择,或列选择,不能同时进行列选择,列选择只能是列名。