Pandas DataFrame索引和列属性

时间:2020-02-23 14:42:06  来源:igfitidea点击:

Pandas DataFrame的索引和列属性允许我们获取行和列的标签值。

我们可以传递基于整数的值,slice或者boolean参数来获取标签信息。

Pandas DataFrame索引

让我们看一些获取DataFrame对象中不同行的标签的示例。
在研究索引属性的用法之前,我们将创建一个示例DataFrame对象。

import pandas as pd

d1 = {'Name': ['John', 'Jane', 'Mary'], 'ID': [1, 2, 3], 'Role': ['CEO', 'CTO', 'CFO']}

df = pd.DataFrame(d1, index=['A', 'B', 'C'])

print('DataFrame:\n', df)

输出:

DataFrame:
  Name  ID Role
A  John   1  CEO
B  Jane   2  CTO
C  Mary   3  CFO

1.获取单行的标签名称

row_1_label = df.index[1]
print(type(row_1_label))  # <class 'str'>
print(row_1_label)  # B

2.获取多行标签

rows_labels = df.index[[1, 2]]
print(type(rows_labels))  # <class 'pandas.core.indexes.base.Index'>
print(rows_labels)  # Index(['B', 'C'], dtype='object')

3.使用DataFrame索引切片

rows_labels = df.index[1:3]
print(type(rows_labels))  # <class 'pandas.core.indexes.base.Index'>
print(rows_labels)  # Index(['B', 'C'], dtype='object')

4.具有DataFrame索引的布尔值

rows_labels = df.index[[True, False, True]]
print(type(rows_labels))  # <class 'pandas.core.indexes.base.Index'>
print(rows_labels)  # Index(['A', 'C'], dtype='object')

我们无法使用DataFrame索引属性设置行标签值。
如果我们尝试这样做,它将引发TypeError("索引不支持可变操作")。

df.index[0] = 'a'  # TypeError: Index does not support mutable operations

Python DataFrame列

DataFrame列属性提供列的标签值。
它与index属性非常相似。
我们无法使用此属性设置列标签值。
让我们看一些使用DataFrame列属性的示例。
对于这些示例,我们将重用先前定义的DataFrame对象。

1.获取单列标签

column_1_label = df.columns[1]
print(type(column_1_label))  # <class 'str'>
print(column_1_label)  # ID

2.获取多列标签

columns_labels = df.columns[[1, 2]]
print(type(columns_labels))  # <class 'pandas.core.indexes.base.Index'>
print(columns_labels)  # Index(['ID', 'Role'], dtype='object')

3.使用DataFrame列进行切片

columns_labels = df.columns[1:3]
print(columns_labels)  # Index(['ID', 'Role'], dtype='object')

4.具有DataFrame列的布尔值

columns_labels = df.columns[[False, False, True]]
print(columns_labels)  # Index(['Role'], dtype='object')