我有一个约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的数据
我建议在这里使用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
的所有行。