这应该很容易,但我有一个令人惊讶的烦人时间。下面的代码显示我做了一个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命令的误解)。非常感谢!
答案 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()