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')