本文摘自php中文网,作者php中世界最好的语言,侵删。
这次给大家带来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;
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | sex object
tip float64
total_bill float64
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
|
1 2 3 4 | 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]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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
|
错误的表示:
1 | print df.loc[1:3, [2, 3]]#.loc仅支持列名操作
|
1 | KeyError: 'None of [[2, 3]] are in the [columns]'
|
1 | print df.loc[[2, 3]]#.loc可以不加列名,则是行选择
|
1 2 3 | sex tip total_bill
2 Male 3.50 23.68
3 Male 3.31 23.68
|
1 | print df.iloc[1:3]#.iloc可以不加第几列,则是行选择
|
1 2 3 | sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
|
1 | print df.iloc[1:3, 'tip' : 'total_bill' ]
|
1 | TypeError: cannot do slice indexing on < class 'pandas.indexes.base.Index' > with these indexers [tip] of <type 'str' >
|
1 2 3 4 | 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' ]]
|
1 2 3 4 5 6 7 8 9 10 | 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
|
1 2 3 | sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
|
1 2 3 | print df[1: 3]
print df[[ 'total_bill' , 'tip' ]]
# print df[1:2, [ 'total_bill' , 'tip' ]] # TypeError: unhashable type
|
1 2 3 4 5 6 7 8 9 | 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
|
1 | TypeError: unhashable type
|
阅读剩余部分
相关阅读 >>
Python如何通过future处理并发问题的实例详解
Python是一种面向什么的高级语言
Python如何利用公式计算π
Python学习必备知识汇总
mac自带Python在哪
Python爬虫怎么获取cookie
Python是什么?Python如何使用?
Python语言有何特点
pytorch + visdom cnn处理自建图片数据集的方法
window下编写Python脚本在linux下运行出错 usr/bin/Python^m: bad interpreter: no such file or directory
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » pandas+dataframe实现行列选择与切片操作