9

使用导入的 CSV 文件,我像这样索引 DataFrame...

 rdata.set_index(['race_date', 'track_code', 'race_number', 'horse_name'])

这就是 DataFrame 的一部分的样子......

 race_date  track_code race_number horse_name          work_date  work_track
 2007-08-24 BM         8           Count Me Twice     2007-05-31         PLN
                                   Count Me Twice     2007-06-09         PLN
                                   Count Me Twice     2007-06-16         PLN
                                   Count Me Twice     2007-06-23         PLN
                                   Count Me Twice     2007-08-05         PLN
                                   Judge's Choice     2007-06-07          BM
                                   Judge's Choice     2007-06-14          BM
                                   Judge's Choice     2007-07-08          BM
                                   Judge's Choice     2007-08-18          BM

为什么“horse_name”列不像日期、赛道和比赛那样分组?也许这是设计使然,因此我如何通过比赛来分割这个更大的 DataFrame 以获得一个以“horse_name”为索引的新 DataFrame?

4

1 回答 1

10

这不是一个错误。这正是它的预期工作方式。

DataFrame 必须显示其数据中的每一项。因此,如果索引有一个级别,则该级别将被完全扩展。如果它有两层,第一层将被分组,第二层将完全展开,如果它有树层,前两层将被分组,第三层将被展开,依此类推。

所以这就是为什么马名没有分组的原因。如果您还按马名分组,您将如何查看 DataFrame 中的所有项目:)

尝试做:

 rdata.set_index(['race_date', 'track_code', 'race_number'])

或者:

 rdata.set_index(['race_date', 'track_code'])

您会看到索引的最后一级始终完全展开,以便您查看 DataFrame 中的所有项目。

于 2013-08-06T23:08:19.330 回答