多指数与一系列指数

问题描述 投票:0回答:1

我有一个约100k行的数据帧df,格式为: -

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的数据

python pandas dataframe
1个回答
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

这将为您提供ID1的所有行。

© www.soinside.com 2019 - 2024. All rights reserved.