import pandas as pd pd.options.display.max_rows = 10 # 设置显示行数 df1 = pd.read_csv(r'E:anacondatestPythonData高校信息.csv', encoding='gbk', index_col=['学校名称', '名次', '类型']) # 使用索引排序,level存在多个索引时指明用哪个排序,ascending是升序还是降序,na_position缺失值排列顺序last最后/first最前 df1.sort_index(level=['学校名称', '类型'], ascending=[True, False], inplace=False, na_position='last') # 使用变量排序 df1.sort_values(['学校名称', '类型'], ascending=[True, False], inplace=False, na_position='last') # 案列筛选的实质是基于T/F值进行筛选 sellist = [True, True, False] print(df1.iloc[sellist]) # 按照绝对位置进行筛选 print(df1.iloc[0:3]) # 不包括右侧界值,筛选第一和第二行 print(df1.iloc[[0, 3]]) print(df1.iloc[:,0:3]) # 指定列范围,不包括右侧边界 print(df1.iloc[1:4, [0, 3]]) # 同时指定行列范围 # 按照索引(这里的索引是学校名称,不能有多个索引列)值进行筛选 print(df1.loc[2:4]) # 切片本身就是一个列表,所以不需要加[] print(df1.loc[['北京大学', '复旦大学']]) # 筛选出学校名称符合条件的行 print(df1.loc[['北京大学', '复旦大学'],['所在省份', '总的']]) # 筛选出学校名称符合条件的行,并指定要显示哪几列 # 使用多重索引进行筛选 print(df1.loc[['财经', '师范']]) # 筛选出所有的财经类和师范类大学 print(df1.loc[[('财经', '中央财经大学'), ('综合', '北京大学')]]) # 多重索引的完整检索,筛选出学校类型中财经下的中央财经大学和综合下的北京大学 # print(df1.xs('中央财经大学', level=1, drop_level=False)) # 直接进行条件筛选 print(df1[df1.名次 > 10]) print(df1.名次.isin([1, 3, 5])) print(df1.index.isin(['财经', '师范'])) # 多重条件联合筛选 print(df1[df1.名次>10][df1[df1.名次>10].名次 <90]) # 筛选名次大于10小于90的 # 使用类sql语句进行筛选 df1.query("名次>10 and 名次<90 and 类型 != '综合'") limit = 5 df1.query("名次>@limit & 类型 != '综合'")