Pandas DataFrame将列添加到索引而不重置

时间:2012-06-14 20:09:38

标签: python dataframe pandas

如何将'd'添加到下面的索引而不必先重置它?

from pandas import DataFrame
df = DataFrame( {'a': range(6), 'b': range(6), 'c': range(6)} )
df.set_index(['a','b'], inplace=True)
df['d'] = range(6)

# how do I set index to 'a b d' without having to reset it first?
df.reset_index(['a','b','d'], inplace=True)
df.set_index(['a','b','d'], inplace=True)

df

2 个答案:

答案 0 :(得分:53)

我们向append添加了set_index选项。试试吧。

命令是:

df.set_index(['d'], append=True)

(我们不需要指定['a','b'],因为它们已经在索引中,我们将附加到它们中)

答案 1 :(得分:-1)

您的代码无效,reset_index在我的pandas版本(0.8.1)中没有inplace参数。 以下内容可以达到您想要的效果,但可能会有更优雅的方式,但是您没有提供足够的信息来说明为什么要避免使用reset_index。

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)])

HTH