python列索引和行索引_pandas DataFrame索引行列的实现

python版本: 3.6

pandas版本: 0.23.4

行索引

索引行有三种方法,分别是 loc iloc ix

import pandas as pd

import numpy as np

index = ["a", "b", "c", "d"]

data = np.random.randint(10, size=(4, 3))

df = pd.DataFrame(data, index=index)

"""

0 1 2

a 9 7 1

b 0 0 7

c 2 6 5

d 8 2 5

"""

loc

loc通过行索引名字来确定行的

单行索引, 返回Series对象

df.loc["a"]

"""

0 9

1 7

2 1

Name: a, dtype: int64

"""

df.loc["b"]

"""

0 0

1 0

2 7

Name: b, dtype: int64

"""

多行索引, 返回DataFrame对象

df.loc[["a", "c"]]

"""

0 1 2

a 9 7 1

c 2 6 5

"""

iloc

通过行索引序号来确定行的

单行索引, 返回Series对象

df.iloc[0]

"""

0 9

1 7

2 1

Name: a, dtype: int64

"""

df.iloc[1]

"""

0 0

1 0

2 7

Name: b, dtype: int64

"""

多行索引, 返回DataFrame对象

df.iloc[[0, 2]]

"""

0 1 2

a 9 7 1

c 2 6 5

"""

ix(不建议使用)

通过行索引名字或序号来确定行的, 如果行索引 index 的类型为整型时, 使用 ix 方法索引时为按行索引名字进行索引, 如行索引名不存在则会报错

index = [2, 3, 4, 5]

df = pd.DataFrame(data, index=index)

"""

0 1 2

2 9 7 1

3 0 0 7

4 2 6 5

5 8 2 5

"""

df.ix[2]

"""

0 9

1 7

2 1

Name: 2, dtype: int64

"""

# 提示信息

"""

.ix is deprecated. Please use

.loc for label based indexing or

.iloc for positional indexing

"""

# 如果 index 为整数, 则不能按行索引号进行索引

df.ix[0]

"""

...

KeyError: 0

"""

列索引

索引行有两种方法,分别是 . []

import pandas as pd

import numpy as np

columns = ["i", "ii", "iii"]

data = np.random.randint(10, size=(4, 3))

df = pd.DataFrame(data, columns=columns)

"""

i ii iii

0 4 5 9

1 0 3 4

2 7 9 1

3 8 2 3

"""

通过 . 属性直接获取指定行, 返回Series对象

df.i

"""

0 4

1 0

2 7

3 8

Name: i, dtype: int64

"""

[]

单列索引, 返回DataFrame对象

df[["i"]]

"""

i

0 4

1 0

2 7

3 8

"""

多列索引, 返回DataFrame对象

df[["i", "ii"]]

"""

i ii

0 4 5

1 0 3

2 7 9

3 8 2

"""

同时索引行及列

通过指定索引名或切片方式进行索引

index = ["a", "f", "c", "h"]

columns = ["i", "ii", "iii"]

df = pd.DataFrame(data, index=index, columns=columns)

"""

i ii iii

a 4 5 9

f 0 3 4

c 7 9 1

h 8 2 3

"""

loc

通过指定行及列索引名进行索引, 返回DataFrame对象

df.loc[["a", "f"], ["ii", "iii"]]

"""

ii iii

a 5 9

f 3 4

"""

通过指定行及列索引名范围进行索引(包含边值), 返回DataFrame对象

df.loc["a":"c", "ii":"iii"]

"""

ii iii

a 5 9

f 3 4

c 9 1

"""

iloc

通过指定行及列索引号进行索引, 返回DataFrame对象

df.iloc[[0, 1], [1, 2]]

"""

ii iii

a 5 9

f 3 4

"""

通过指定行及列索引号范围进行切片索引(左闭右开), 返回DataFrame对象

df.iloc[:3, 1:3]

"""

ii iii

a 5 9

f 3 4

c 9 1

"""

ix(不建议使用)

通过指定行及列索引号范围或名字范围进行切片, 返回DataFrame对象

df.ix["a":"c", "i":"iii"]

df.ix["a":"c", 1:3]

df.ix[:3, 1:3]

tips: 只有使用 iloc 或 ix 按索引号进行切片索引时才为左闭右开, 其余全闭

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: pandas DataFrame索引行列的实现

本文地址: http://www.cppcns.com/jiaoben/python/261647.html

你可能感兴趣的:(python列索引和行索引)