这篇博文主要介绍索引对象。
Index对象
一级索引对象
从Series对象中获得Index对象:
data = {
"apples":2,
"bananas":4,
"oranges":9
}
s = pd.Series(data)
s
s.index
Out:
从DataFrame对象中获得Index对象:
data = {
"apples":[2,3,4,5],
"bananas":[1,5,2,3],
"oranges":[9,4,6,3]
}
df = pd.DataFrame(data,index=["Lily","Tom","David","Robert"])
df
df.index
df.columns
Out:
创建索引对象
在Series中使用索引对象:
labels = pd.Index(["a","b","c","d"])
s = pd.Series(np.arange(4), index=labels)
s
Out:
在DataFrame中使用索引对象:
data = [[2,3,4],
[1,5,2],
[9,4,6],
[12,4,15]]
row_labels = pd.Index(['Lily', 'Tom', 'David', 'Robert'])
column_labels = pd.Index(['apples', 'bananas', 'oranges'])
df = pd.DataFrame(data, index=row_labels, columns = column_labels)
df
Out:
重建索引
重建索引使用reindex()方法。
在Series对象中重建索引:
se1=pd.Series([1,7,3,9],index=['d','c','a','f'])
se1
se2=se1.reindex(['a','b','c','d','e','f'])
se2
Out:
在使用method参数的时候 index must be monotonic increasing or decreasing。
se3=pd.Series(["a", "b", "c"],index=[1,3,5])
se3
se4=se3.reindex(range(6),method='bfill')
se4
Out:
在DataFrame对象中重建索引:
df2 = df.reindex(['Tom', 'David', 'Robert'])
df2
Out:
df3 = df.reindex(columns=["oranges","bananas","apples"])
df3
Out:
MultiIndex对象
创建多级索引对象
#创建多级索引对象,pandas.MultiIndex.from_tuples从元组创建多级索引
pandas.MultiIndex.from_arrays#从数组
pandas.MultiIndex.from_product#从笛卡尔积
pandas.MultiIndex.from_frame#从数据框
keys = [("Lily","apples"),("Lily","bananas"),("Lily","oranges"),
("Tom","apples"),("Tom","bananas"),("Tom","oranges"),
("Pilph","apples"),("Pilph","bananas"),("Pilph","oranges")]
keys
index = pd.MultiIndex.from_tuples(keys,names=["names","fruits"])
data=[1,2,3,13,45,2,3,4,7]
w = pd.Series(data,index=index)
w
Out:
多级索引行列转换
1.unstack()方法可以快速将一个多级索引的 Series转化为普通索引的DataFrame
w.unstack()
Out:
2.stack()方法可以将一个普通索引的 Dataframe转化为多级索引的Series
df.stack()
Out:
多级索引数据存取
多级索引数据存值可以使用运算符,也可以使用loc[]等存取器。