在Pandas DataFrame中使用set_index

时间:2013-08-06 03:10:12

标签: python pandas

使用导入的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?

1 个答案:

答案 0 :(得分:10)

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

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

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

尝试做:

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

或:

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

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