我有一个看起来像这样的数据框:
Grouped Week Revenue Users Period CSum
2013-10-14 2013-10-14 2863.75 36 1 2863.75
2013-10-21 202.20 4 2 3065.95
2013-10-28 603.45 8 3 3669.40
2013-11-04 535.65 9 4 4205.05
2013-11-11 424.45 14 5 4629.50
2015-06-01 2015-06-01 24115.91 468 1 24115.91
2015-06-08 1634.93 32 2 25750.84
2015-06-15 2664.00 62 3 28414.84
2015-06-22 1646.05 40 4 30060.89
尝试与Pandas找出如何从本质上讲为每个分组仅提供第4期,以便获得:
Grouped Week Revenue Users Period CSum
2013-10-14 2013-11-04 535.65 9 4 4205.05
2015-06-01 2015-06-22 1646.05 40 4 30060.89
最好的方法是什么?
最佳答案
boolean indexing
解决方案:
df = df[df['Period'] == 4]
print (df)
Revenue Users Period CSum
Grouped Week
2013-10-14 2013-11-04 535.65 9 4 4205.05
2015-06-01 2015-06-22 1646.05 40 4 30060.89
如果需要,使用
cumcount
的另一种解决方案需要在每个第一级4.th
中选择每个MultiIndex
行,并且不能使用第一个解决方案:ser = df.groupby(level=0).cumcount()
print (ser)
Grouped Week
2013-10-14 2013-10-14 0
2013-10-21 1
2013-10-28 2
2013-11-04 3
2013-11-11 4
2015-06-01 2015-06-01 0
2015-06-08 1
2015-06-15 2
2015-06-22 3
dtype: int64
print (ser == 3)
Grouped Week
2013-10-14 2013-10-14 False
2013-10-21 False
2013-10-28 False
2013-11-04 True
2013-11-11 False
2015-06-01 2015-06-01 False
2015-06-08 False
2015-06-15 False
2015-06-22 True
dtype: bool
print (df[ser == 3])
Revenue Users Period CSum
Grouped Week
2013-10-14 2013-11-04 535.65 9 4 4205.05
2015-06-01 2015-06-22 1646.05 40 4 30060.89
关于python - Pandas 新手:按数据帧中的第n行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40230668/