Pandas Dataframes如何维护索引post a group by/aggregation操作?

2024-10-03 02:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

这应该很容易,但我却有一个令人惊讶的恼人的时间。下面的代码演示了如何执行Pandas groupby操作,以便可以按符号计算方差。不幸的是,aggregation命令似乎去掉了整数索引,所以我尝试创建一个新的整数列表,并将其作为列添加到表中,并设置为新索引。在

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()结果,它没有正确地将表的索引从符号改回数值。当我尝试执行merge命令时,这会在一两行中伤害我。在

^{pr2}$

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


Tags: 代码命令pandasnp时间符号整数symbol
2条回答

不用手动创建新索引,只需使用。。。在

df = df.reset_index()

您可以使用as_index=False来保留整数索引。您只需要一行代码就可以完成您需要的操作:

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

代码中有几点:

^{pr2}$

ndewindex设置为索引,但返回一个未使用的新数据帧。如果需要,可以执行vardataframe.set_index(['newindex'], inplace=True)。在

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

给出所有NaN的列Symbol,因为Symbol不是{}的列,而只存在于其index中。使用ix查询不存在的列将得到所有NaN。正如@user2600939所提到的,您可以做vardataframe.reset_index(inplace=True)(或vardataframe=vardataframe.reset_index())将Symbol放回一列。在

相关问题 更多 >