我有一个数据框,如下所示: Name Status Date1 Joe In 1/2/20032 Pete Out 1/2/20033 Mary In 1/2/2003• • •4 Joe In 3/4/20045 Pete In 3/5/20046 Mary Out 4/8/2004如果我执行以下分组操作:df.groupby(["Name", "Status"]).last()我得到以下内容:Joe In 3/4/2004Pete In 3/5/2004 Out 1/2/2003Mary In 1/2/2003 Out 4/8/2004请注意,Joe没有“ out”分组结果,因为在数据框中没有Joe的“ out”值。我希望能够从数据框或随后的分组依据中选择在整个日期范围内仅具有“进入”状态或仅具有“离开”状态的人员,而不是同时具有“进入”和“离开”的人员特定的日期范围。我很困惑如何解决这个问题。如果groupby结果给我类似的信息,我可以继续进行以下操作:Joe Out np. Nan但事实并非如此。哦,我最后一次进行分组比对是因为我需要获得人们离开Pete和Mary之类的同时处于“进入”和“离开”状态的最后日期。但是我需要不同对待乔-他在此期间仅具有“处于”状态而没有“处于”状态的人。任何指导表示赞赏。
1 回答
达令说
TA贡献1821条经验 获得超6个赞
不知道你想要什么。但是您可以尝试重新索引
从
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
添加回答
举报
0/150
提交
取消