电子爱好者,必要的仪器还是要有的
2026/5/6 8:25:28
pandas查询特定范围有四种方式:
df[行索引1:行索引5][[列索引1,列索引3,列索引5]]df.列名,这种形式,列名直接写名称,不用加双引号写成字符串,且df.列名这种形式支持单列查询,不支持多列和行查询。# 写法1df.loc[行标签1:行标签5,列标签1:列标签5]# 写法2df.loc[[行标签1,行标签5],[列标签1,列标签3,列标签5]]# 注意:loc[]是属性(用方括号),不是函数(不能用圆括号)# 写法1df.iloc[行索引1:行索引5,列索引1:列索引5]# 写法2df.iloc[[行索引1,行索引5],[列索引1,列索引3,列索引5]]# 注意:iloc[]是属性(用方括号),不是函数(不能用圆括号)| 操作类型 | 直接索引[] | .loc[] | .iloc[] |
|---|---|---|---|
| 选择单列 | ✅df['A'] | ✅df.loc[:, 'A'] | ✅df.iloc[:, 0] |
| 选择多列(列表) | ✅df[['A','B']] | ✅df.loc[:, ['A','B']] | ✅df.iloc[:, [0,1]] |
| 列切片(连续) | ❌ 不支持 | ✅df.loc[:, 'A':'C'] | ✅df.iloc[:, 0:3] |
| 选择单行 | ❌ 不支持 | ✅df.loc['a'] | ✅df.iloc[0] |
| 选择多行(列表) | ❌ 不支持 | ✅df.loc[['a','c']] | ✅df.iloc[[0,2]] |
| 行切片(连续) | ✅df['a':'c'] | ✅df.loc['a':'c'] | ✅df.iloc[0:3] |
| 同时选行列(标量) | ❌ 不支持 | ✅df.loc['a','A'] | ✅df.iloc[0,0] |
| 同时选行列(切片/列表) | ❌ 不支持 | ✅df.loc['a':'c', 'A':'C'] | ✅df.iloc[0:3, 0:3] |
| 布尔索引(行筛选) | ✅df[df['A']>0] | ✅df.loc[df['A']>0] | ❌ 不支持 |
| 布尔索引+指定列 | ⚠️ 链式索引 | ✅df.loc[df['A']>0, 'B'] | ❌ 不支持 |
| 负索引(从末尾) | ❌ 不支持 | ❌ 不支持 | ✅df.iloc[-3:, -2:] |
| 步长切片 | ❌ 不支持 | ⚠️ 部分支持 | ✅df.iloc[0:5:2, 0:3:1] |
df[df['列']>值]# 条件筛选行df[(df['列1']>值1)&(df['列2']==值2)]# 多条件df[df['列'].isin([值1,值2])]# isin条件importarcpyimportpandasaspd path=r"C:\Users\ZZQ\Desktop\待整理\行政区划数据(淘宝)\全国行政区划\84坐标行政区划\行政区划.gdb\市级行政区划"witharcpy.da.SearchCursor(path,["省","市","类型"])ascursor:data=pd.DataFrame(cursor,columns=["省","市","类型"])data=data[data["省"].isin(["江苏省","山东省"])]data