- import pandas as pd
- import numpy as np
- index = [('California', 2000), ('California', 2010),
- ('New York', 2000), ('New York', 2010),
- ('Texas', 2000), ('Texas', 2010)]
- populations = [33871648, 37253956,
- 18976457, 19378102,
- 20851820, 25145561]
- pop = pd.Series(populations, index=index)
- pop
对于这样的序列,我们依然可以通过指定的索引条件进行目标数据的选取:
- pop[('California', 2010):('Texas', 2000)]
- pop[[i for i in pop.index if i[1] == 2010]]
运用 Pandas 中的 MultiIndex.from_tuples 函数,我们可以将 index 列表转化为一个 MultiIndex 对象:
- index = pd.MultiIndex.from_tuples(index)
- index
当我们用该 MultiIndex 对象对 Pandas 序列进行重塑时,目标序列的序号将会被转化为多层级的形式:
- pop = pop.reindex(index)
- pop
这时,属于不同层级的序号将被视为不同维度上的索引值,我们可以使用多维索引的方式来索引所需要的目标数据:
- pop[:, 2010]
我们可以通过 unstack 函数将序列 pop 转化为一个二维的数据框,序号中的两个维度将分别对应数据框的行与列:
- pop_df = pop.unstack()
- pop_df
可以通过调整参数 level 的值来指定生成数据框的行列:
- pop.unstack(level=0)
以上内容转自 数析学院,原文内容较多,有空继续搬运,感兴趣的同学可以直接去查看原文