pandas 6 - 索引切片选择( tcy)
发布日期:2021-06-29 14:48:00 浏览次数:2 分类:技术文章

本文共 3110 字,大约阅读时间需要 10 分钟。

索引切片选择      2018/12/3  2018/12/14  

1.Series选择:

操作 句法 实例 结果 说明
 -  -  -  - s=pd.Series([0,1,2,3,4],index=list('abcde'))
标签s/s.loc s[单个标签] s['c'] , s.loc['c'] 2 如未包含标签则引发异常
标签s/s.loc s[标签切片] s['c':'e']=6 2,3,4 标签切片包含末端‘e’;
标签s/s.loc s[标签列表] s[['c','d','e']] 2,3,4 标签不存在抛异常。错误用法s[('c','d','e')]
切片s/s.iloc s[n-1] s[2],s.iloc[2] 2  -
切片s/s.iloc s[切片] s[2:] 2,3,4 选择第3,4,5行数据
切片s/s.iloc  - s[:3] , s[-3:]  - 选择前,后3个数据
bool-s/s.iloc s[布尔向量] s[s>1] , s.loc[s>1] 2,3,4 选择s>1的数据2,3,4个数据(第3,4,5行)
属性访问 s.a s.c 2  -
get-函数 s.get(label) s.get('c') 2 缺少标签返回None或指定默认值

 

2.数据帧DataFrame选择:-汇总表

 

No

函数 df[] df.loc[] df.iloc[] df.at[] df.iat[]
1 用途 选择行或列 选择行列 选择行列 标量 标量
2 索引数值 行索引int或str; 索引是行名,列名 索引是数值 索引是行名,列名 索引是数值
    列索引是行,列名  -  -  -  -
3 选择标量  - df.loc['b','C']  df.iloc[1,2] df.at['b','C'] df.iat[1,2]
  选择标量  -  -  - df.loc['b'].iat[2] df.iloc[1].at['C']
4 选择行 df[0:1]或df['a':'a']  df.loc['b'] df.iloc[1]  -  -
  选择行 df[0:3]或df['a':'c']   df.loc[['b','c']] df.iloc[[1,3]]  -  -
  选择行   df.loc['a':'c'] df.iloc[1:4]  -  -
5 选择列 df['A']或df.A  df.loc[:,'B'] df.iloc[:,1]  -  -
  选择列 df[['A','C']]    df.loc[:,['B','C']] df.iloc[:,[1,2]]  -  -
  选择列  - df.loc[:,'A':'C'] df.iloc[:,0:3]  -  -
6 选择行列  - df.loc['a':'c','A':'C'] df.iloc[0:3,0:3]  -  -
  选择行列  - df.loc['a':'c',['A','C']] df.iloc[0:3,[0,2]]  -  -
  选择行列  - df.loc[['a','c'],'A':'C'] df.iloc[[0,2],0:3]  -  -
  选择行列  - df.loc['a','A':'C'] df.iloc[0,0:3]  -  -
7 布尔索引 df[b1],df[df.A>0]   行 df.loc[b1,b2] df.iloc[b1,b2]  -  -
    df[df['B'].isin([6,7])]行 b1=np.array([0,1,0,1,0],dtype=bool) b2=np.array([1,0,1,0],dtype=bool)
  注意:          
  df=pd.DataFrame(np.arange(20).reshape((5,4),order='F'),index=list('abcde'),columns=list('ABCD'))
  返回值:数值,系列,数据帧;当标签列表返回系列时,若想返回数据帧外加一层中括号。
  df[0]或df['a']错误用法;当有分号不能外加中括号;都可以查看设置数据。

 

 2.2.实例:

 

df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],index=[4, 5, 6], columns=['A', 'B', 'C'])# 实例1:df.loc[5].at['B'] # 获取标量值: 4df.loc[5].iat[1]  # 获取标量值:4df.iloc[1,1]      # 4df.iat[1,1]=4     # 4# 实例2:df.loc[dates[0]] # 按标签选择:获取第一行df.iloc[2]       # 通过传递的整数的位置df.loc[:,['A','B']]          # 按标签选择:获取第A,B列df.loc['20181015',['A','B']] # 按标签选择-减少返回对象的尺寸df.iloc[3:5,0:2]       # 通过整数切片df.iloc[[1,2,4],[0,2]] # 通过整数位置位置列表# 实例3:使用isin()过滤方法df2 = df.copy()df2['D'] = ['one','two','three']df2[df2['D'].isin(['two','three'])]'''   A  B  C  D5  0  4  1  two6 10 20 30  three'''# 实例4:布尔索引-使用单个列的值来选择数据。df[df.B >=4 ]#   A   B  C# 5 0   4  1# 6 10 20 30df.loc[[False, False, True]]#选取第3行df.loc[df['B'] >4, ['C']]   #一个值返回为数据帧# 实例5:select_dtypes() 选择显示特定数据类型# 要选择所有数字和布尔列,同时排除无符号整数:df.select_dtypes(include=['number', 'bool'], exclude=['unsignedinteger'])# 实例6:按可调用选择# .loc,.iloc以及[]索引也可以接受一个callable索引器。df.loc[lambda df: df.A > 0, :]    #获取第三行数据df.loc[:, lambda df: ['A', 'B']]  #获取A,B列数据df.iloc[:, lambda df: [0, 1]] #获取A,B列数据df[lambda df: df.columns[0]]  #获取A列数据df.A.loc[lambda s: s > 0] #获取序列=10# 实例7:IX 已弃用df.loc[df.index[[0, 2]], 'A']           # 获取第1,2行第A列数据df.iloc[[0, 2],df.columns.get_loc('A')] # 获取第1,2行第A列数据df.iloc[[0, 2],df.columns.get_indexer(['A','B'])] # 获取第1,2行第A,B列数据# 实例8:设置数据df[['B', 'A']] = df[['A', 'B']]       #就地修改df.loc[:,['B', 'A']] = df[['A', 'B']] #不会修改# 交换列值的正确方法是使用原始值:df.loc[:,['B', 'A']] = df[['A', 'B']].values

 

 

转载地址:https://chunyou.blog.csdn.net/article/details/84730151 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:pandas 学习汇总7 - 缺失数据( tcy)
下一篇:pandas 学习汇总5 - index 创建( tcy)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月18日 02时35分18秒