2012-06-14 63 views
14

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

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 

回答

30

我们增加了一个append选项​​。试试看。

的命令是:

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

(我们并不需要指定[“一”,“B”],因为他们已经在索引中,我们要追加他们)

-1

您的代码是无效的,reset_index在我的版本的熊猫(0.8.1)没有就地说法。 以下内容可以实现您想要的功能,但可能会有更优雅的方式,但您尚未提供足够的信息来说明您为何避免使用reset_index。

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

HTH

相关问题