多指数与一系列指数

时间:2017-12-26 05:27:05

标签: python pandas dataframe

我的数据帧df大约有10万行,格式为: -

ID, Date, Count
1,  11-12-2017,23
1,  12-12-2017,21
2,  11-12-2017,13
2,  12-12-2017,28
3,  11-12-2017,22
3,  12-12-2017,23

在此范围内,我必须为特定日期处理所有ID的数据。我现在在ID上应用了索引: -

df2 = df.set_index('ID')
df3 = df2[:"123"]

在这里,最好在df3上应用日期索引,还是我最初应该在df本身使用多索引。

因此,在上面的df中,我想获取日期为11-12-2017的ID 1,3的数据

1 个答案:

答案 0 :(得分:1)

我建议在这里使用MultiIndex,而不是多次设置索引。

df

               Count
ID Date             
1  11-12-2017     23
   12-12-2017     21
2  11-12-2017     13
   12-12-2017     28
3  11-12-2017     22
   12-12-2017     23

MultiIndex的优点是您可以使用一系列便利功能对切片进行索引。例如,pd.IndexSlice的使用适用于此处 -

idx = pd.IndexSlice
df.loc[idx[[1, 3], '11-12-2017'], :]

               Count
ID Date             
1  11-12-2017     23
3  11-12-2017     22

要获取与特定日期相对应的计数,请使用ID切换每个: -

df.loc[idx[:, '11-12-2017'], :]

               Count
ID Date             
1  11-12-2017     23
2  11-12-2017     13
3  11-12-2017     22

如果要获取第0级特定值的所有行,也可以使用df.xs,例如 -

df.xs(1)

            Count
Date             
11-12-2017     23
12-12-2017     21

为您提供ID 1的所有行。