首页 > 编程 > Python > 正文

pandas DataFrame索引行列的实现

2019-11-25 12:48:55
字体:
来源:转载
供稿:网友
  • python版本: 3.6
  • pandas版本: 0.23.4

行索引

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

import pandas as pdimport numpy as npindex = ["a", "b", "c", "d"]data = np.random.randint(10, size=(4, 3))df = pd.DataFrame(data, index=index)"""  0 1 2a 9 7 1b 0 0 7c 2 6 5d 8 2 5"""

loc

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

单行索引, 返回Series对象

df.loc["a"]"""0  91  72  1Name: a, dtype: int64"""df.loc["b"]"""0  01  02  7Name: b, dtype: int64"""

多行索引, 返回DataFrame对象

df.loc[["a", "c"]]"""  0 1 2a 9 7 1c 2 6 5"""

iloc

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

单行索引, 返回Series对象

df.iloc[0]"""0  91  72  1Name: a, dtype: int64"""df.iloc[1]"""0  01  02  7Name: b, dtype: int64"""

多行索引, 返回DataFrame对象

df.iloc[[0, 2]]"""  0 1 2a 9 7 1c 2 6 5"""

ix(不建议使用)

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

index = [2, 3, 4, 5]df = pd.DataFrame(data, index=index)"""  0 1 22 9 7 13 0 0 74 2 6 55 8 2 5"""df.ix[2]"""0  91  72  1Name: 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 pdimport numpy as npcolumns = ["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  41  02  73  8Name: i, dtype: int64"""

 []

单列索引, 返回DataFrame对象

df[["i"]]"""  i0 41 02 73 8"""

多列索引, 返回DataFrame对象

df[["i", "ii"]]"""  i ii0 4  51 0  32 7  93 8  2"""

同时索引行及列

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

index = ["a", "f", "c", "h"]columns = ["i", "ii", "iii"]df = pd.DataFrame(data, index=index, columns=columns)"""  i ii iiia 4  5  9f 0  3  4c 7  9  1h 8  2  3"""

loc

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

df.loc[["a", "f"], ["ii", "iii"]]"""  ii iiia  5  9f  3  4"""

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

df.loc["a":"c", "ii":"iii"]"""  ii iiia  5  9f  3  4c  9  1"""

iloc

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

df.iloc[[0, 1], [1, 2]]"""  ii iiia  5  9f  3  4"""

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

df.iloc[:3, 1:3]"""  ii iiia  5  9f  3  4c  9  1"""

ix(不建议使用)

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

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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表