58

如何添加'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
4

2 回答 2

100

我们添加了一个append选项set_index。试试看。

命令是:

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

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

于 2012-08-08T02:50:06.007 回答
-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)])

高温高压

于 2012-07-26T15:45:35.037 回答