pandas+dataframe实现行列选择与切片操作


本文摘自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

print df.ix[[1, 2]]#行选择

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

print df[1:3,1:2]

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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...