我正试图在Pandas系列中附加一个关卡。说创建一个简单的系列:
series = pd.Series(range(10), index = list("ABCDEFGHIJ"))
series
只有一个索引级别。我想添加第二个级别。使用DataFrame,您可以使用DataFrame.set_index
来做到这一点。但是,如果不首先将我的系列转换为DataFrame,我提出的最简单的事情就是:
index = [np.array(["L2" for x in series.index]), np.array(series.index)]
series2 = pd.Series(series.tolist(), index = index)
series2
现在有一个包含两个级别的多索引。
有没有更简单,更清洁的方法?
答案 0 :(得分:3)
不确定这是否更清洁;有一个MultiIndex
类可用于构建层次索引:
>>> import pandas as pd
>>> series = pd.Series(range(10), index = list("ABCDEFGHIJ"))
创建一个新对象,重用原始series
索引:
>>> pd.Series(xrange(10),
pd.MultiIndex.from_tuples([('L2', a) for a in series.index]))
L2 A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
dtype: int64
或者也可以改变原地系列:
>>> import pandas as pd
>>> series = pd.Series(range(10), index = list("ABCDEFGHIJ"))
>>> series.index = pd.MultiIndex.from_tuples([('L2', a) for a in series.index])
或者只是从一个MultiIndex
开始:
>>> import pandas as pd
>>> series = pd.Series(range(10), index=pd.MultiIndex.from_tuples(
[('L2', x) for x in 'ABCDEFGHIJ']))
答案 1 :(得分:2)
一种简单的方法(就地)是:
<h3>Username: {{ user->username }}</h3>
<h3>Username: {{ review->number_review }}</h3>
编辑还有另一种方法可以做同样的事情(不是在地方):
series.index = pd.MultiIndex.from_product([['L2'], series.index])