我的数据帧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的数据
答案 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
的所有行。