视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
pandas+dataframe实现行列选择与切片操作
2020-11-27 14:22:08 责编:小采
文档


这次给大家带来pandas+dataframe实现行列选择与切片操作,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;

实例

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
sex object
tip float
total_bill float
dtype: object
RangeIndex(start=0, stop=5, step=1)
Index([u'sex', u'tip', u'total_bill'], dtype='object')
[['Female' 1.01 16.99]
 ['Male' 1.66 10.34]
 ['Male' 3.5 23.68]
 ['Male' 3.31 23.68]
 ['Female' 3.61 24.59]]
 sex tip total_bill
0 Female 1.01 16.99
1 Male 1.66 10.34
2 Male 3.50 23.68
3 Male 3.31 23.68
4 Female 3.61 24.59
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]
 total_bill tip
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
 tip total_bill
1 1.66 10.34
2 3.50 23.68
3 3.31 23.68
 tip total_bill
1 1.66 10.34
2 3.50 23.68
 tip total_bill
1 1.66 10.34
2 3.50 23.68

错误的表示:

print df.loc[1:3, [2, 3]]#.loc仅支持列名操作
KeyError: 'None of [[2, 3]] are in the [columns]'
print df.loc[[2, 3]]#.loc可以不加列名,则是行选择
 sex tip total_bill
2 Male 3.50 23.68
3 Male 3.31 23.68
print df.iloc[1:3]#.iloc可以不加第几列,则是行选择
sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
print df.iloc[1:3, 'tip': 'total_bill']
TypeError: cannot do slice indexing on <class 'pandas.indexes.base.Index'> with these indexers [tip] of <type 'str'>
print df.at[3, 'tip']
print df.iat[3, 1]
print df.ix[1:3, [1, 2]]
print df.ix[1:3, ['total_bill', 'tip']]
3.31
3.31
 tip total_bill
1 1.66 10.34
2 3.50 23.68
3 3.31 23.68
 total_bill tip
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
print df.ix[[1, 2]]#行选择
 sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
print df[1: 3]
print df[['total_bill', 'tip']]
# print df[1:2, ['total_bill', 'tip']] # TypeError: unhashable type
sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
 total_bill tip
0 16.99 1.01
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
4 24.59 3.61
print df[1:3,1:2]
TypeError: unhashable type

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

pandas中的Dataframe查询有哪些方法

selenium+cookie跳过验证码登录实现步奏详解

下载本文
显示全文
专题