我有一个数据帧,如下所示:
Name Status Date
1 Joe In 1/2/2003
2 Pete Out 1/2/2003
3 Mary In 1/2/2003
• • •
4 Joe In 3/4/2004
5 Pete In 3/5/2004
6 Mary Out 4/8/2004
如果我执行以下group-by操作:
df.groupby(["Name", "Status"]).last()
我得到了以下信息:
Joe In 3/4/2004
Pete In 3/5/2004
Out 1/2/2003
Mary In 1/2/2003
Out 4/8/2004
注意,Joe没有"out“分组结果,因为在dataframe中没有Joe的"out”值。
我希望能够从dataframe或后续的groupby中选择在某个日期范围内只有"In“状态或只有"out”状态的人,而不是在特定日期范围内既有“in”状态又有“out”状态的人。我对如何处理这个问题感到困惑。如果groupby结果给出如下结果,我就可以继续:
Joe Out np. Nan
但事实并非如此。
哦,我最后才做groupby,因为我需要得到最后一个日期,人们会像Pete和Mary那样同时保留"In“和"out”状态。但我需要以不同的方式对待Joe -他在这段时间只有“in”状态,没有"out“状态。
如有任何指导,敬请惠顾。
发布于 2018-08-15 01:41:51
不知道你想要什么。但您可以尝试重新编制索引
从…
x = df.groupby(['Name', 'Status']).last()
Date
Name Status
Joe In 3/4/2004
Mary In 1/2/2003
Out 4/8/2004
Pete In 3/5/2004
Out 1/2/2003
你能做到
size = x.index.levels[0].size
f = np.repeat(np.arange(size), 2)
s = [0,1] * size
x.reindex(pd.MultiIndex(levels=x.index.levels, labels=[f, s]))
Date
Name Status
Joe In 3/4/2004
Out NaN
Mary In 1/2/2003
Out 4/8/2004
Pete In 3/5/2004
Out 1/2/2003
https://stackoverflow.com/questions/51851697
复制