我有一个pandas df如下:
date X1 X2 X3 Y user
1/1 0 3 34 5 a
2/1 0 7 65 5 a
3/1 0 13 0 5 a
4/1 25 4 65 0 a
5/1 35 0 0 5 a
6/1 4 6 9 0 a
7/1 0 0 0 5 a
1/1 0 0 34 5 b
2/1 0 7 65 5 b
3/1 0 13 0 5 b
4/1 0 4 65 5 b
5/1 35 0 0 5 b
6/1 4 6 9 0 b
7/1 0 0 0 0 b
如何使用groupby()
,仅在所有Xs
开始出现非零值后才使用select rows per user
。在这种情况下,对于用户a
,仅选择dates
4/1
、5/1
、6/1
、7/1
的行,对于用户b
,仅选择dates
6/1
、7/1
的行。谢谢大家。
2条答案
按热度按时间eqqqjvef1#
你可以这样做
bqjvbblv2#
另一种可能的解决方案是使用
cummax
和 boolean indexing:输出: