python - Pandas Dataframes - 如何在分组/聚合操作后维护索引?

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

        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 列并使 newindex 作为新索引。有人知道我在这里做错了什么吗? (可能是对 ix 命令的误解)。非常感谢!

最佳答案

您可以使用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']]

为您提供所有 NaN 的列 Symbol,因为 Symbol 不是 vardataframe 的列,而只是存在于其索引中。使用 ix 查询不存在的列将得到所有 NaN。正如 @user2600939 提到的,您可以执行 vardataframe.reset_index(inplace=True) (或 vardataframe=vardataframe.reset_index() 来将 Symbol 放回原处作为一列。

关于python - Pandas Dataframes - 如何在分组/聚合操作后维护索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661392/

相关文章:

python - 如何删除 3-ples 列表中每个元组的第二个元素?

python - 在 Keras 中的 BERT 编码器之上堆叠 LSTM 层

python - 有条件地查找 DataFrame 中给定字段 1 的字段 2 中出现的百分比

python - 将 Excel 数据加速到 Pandas

r - ggplot2/geom_line 问题 - 错误地联合绘制了子集数据集

python - 构 build 计矩阵 python

python - 后续: missing required Charfield in django Modelform is saved as empty string and do not raise an error

python - 无法绘制饼图的值计数

python - 带有嵌套字典列表的字典中的 Pandas DataFrame

R 在数据框列上应用用户定义函数