Pandas Dataframes - 如何通过/聚合操作维护一个组发布的索引?

时间:2014-07-09 18:37:40

标签: python pandas dataframe

这应该很容易,但我有一个令人惊讶的烦人时间。下面的代码显示我做了一个Pandas groupby操作,所以我可以用符号计算方差。不幸的是,聚合命令似乎摆脱了整数索引,所以我试图创建一个新的整数列表,并将其作为列添加到表中并设置为新索引。

vardataframe = voldataframe.groupby('Symbol')
vardataframe = vardataframe.aggregate(np.var)
vardataframe['newindex']= np.arange(1,(len(vardataframe)+1))
vardataframe.set_index(['newindex'])
vardataframe = vardataframe.ix[:,['newindex','Symbol','volatility']]

然而,出现的是下面的vardataframe.head()结果,它没有正确地将表的索引从Symbol更改回数字。当我尝试执行合并命令时,这会伤害我一两行。

        newindex  Symbol  volatility
Symbol                              
A              1     NaN    0.000249
AA             2     NaN    0.000413
AAIT           3     NaN    0.000237
AAL            4     NaN    0.001664
AAME           5     NaN    0.001283

如您所见,上面的问题现在有两个Symbol列,并且索引未正确设置。我想要做的是摆脱第二个Symbol列并使newindex为新索引。谁知道我在做错了什么? (也许是对ix命令的误解)。非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以使用as_index=False来保留整数索引。您只需要一行就能满足您的需求:

vardataframe = voldataframe.groupby('Symbol', as_index=False).var()

代码中的一些内容:

vardataframe.set_index(['newindex'])

ndewindex设置为索引,但返回未使用的新数据帧。如果您愿意,可以vardataframe.set_index(['newindex'], inplace=True)

vardataframe.ix[:,['newindex','Symbol','volatility']]

为您提供了所有Symbol的{​​{1}}列,因为NaN不是Symbol的列,而只存在于其vardataframe中。使用index查询不存在的列会提供所有ix。正如@ user2600939所提到的那样,您可以NaN(或vardataframe.reset_index(inplace=True)vardataframe=vardataframe.reset_index()作为一列放回来。

答案 1 :(得分:0)

不是手动创建新索引而只是重置它使用...

df = df.reset_index()