![](/img/trans.png)
[英]Appending a level (with fixed value) to pandas Series/DataFrame
[英]Appending a level to a Pandas Series Index
我试图将一个关卡添加到“熊猫系列”中。 说一个创建简单的系列:
series = pd.Series(range(10), index = list("ABCDEFGHIJ"))
series
具有单个索引级别。 我想添加第二个级别。 有了DataFrame,您可以使用DataFrame.set_index
进行一些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
具有一个具有两个级别的多series2
。
有没有更简单,更清洁的方法呢?
不确定这是否更干净; 有一个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']))
一种简单的方法(就地)是:
series.index = pd.MultiIndex.from_product([['L2'], series.index])
编辑还有另一种方法可以做同样的事情(不是就地):
series2 = pd.concat([series], keys=['L2'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.