Python 首先删除特定值中的行

Python 首先删除特定值中的行,python,pandas,Python,Pandas,我想删除第一次出现的用户数等于1的行以及DataFrame中每个唯一用户的前几行 例如,我有下面的Dataframe,我想得到另一个Dataframe,它删除“val”列1中第一次出现的行以及每个用户的前几行 user val 0 1 0 1 1 1 2 1 0 3 1 1 4 2 0 5 2 0 6 2 1 7 2 0 8 3 1 9

我想删除第一次出现的用户数等于1的行以及DataFrame中每个唯一用户的前几行

例如,我有下面的Dataframe,我想得到另一个Dataframe,它删除“val”列1中第一次出现的行以及每个用户的前几行

      user  val
0      1    0
1      1    1
2      1    0
3      1    1
4      2    0
5      2    0
6      2    1
7      2    0
8      3    1
9      3    0
10     3    0
11     3    0
12     3    1

样本数据
groupby
检查
cummax
shift
以删除每个用户在
'val'
列中的第一行
1

假设您的值为1或0,也可以使用双累积和创建掩码

m = df.groupby('user').val.apply(lambda x: x.eq(1).cummax().shift().fillna(False))
# m = df.groupby('user').val.apply(lambda x: x.cumsum().cumsum().gt(1)) 
df.loc[m]
输出:
groupby
检查
cummax
shift
以删除每个用户在
'val'
列中的第一行
1

假设您的值为1或0,也可以使用双累积和创建掩码

m = df.groupby('user').val.apply(lambda x: x.eq(1).cummax().shift().fillna(False))
# m = df.groupby('user').val.apply(lambda x: x.cumsum().cumsum().gt(1)) 
df.loc[m]
输出:
不要在帖子中包含图片。最好有易于查看的代码。我还简化了数据框的创建。我不明白你的规则,你能澄清一下吗?或者指出原始数据框中的哪一行将被删除&为什么文章中不包含图像。最好有易于查看的代码。我还简化了数据框的创建。我不明白你的规则,你能澄清一下吗?或指示将删除原始数据帧中的哪一行&为什么
m = df.groupby('user').val.apply(lambda x: x.eq(1).cummax().shift().fillna(False))
# m = df.groupby('user').val.apply(lambda x: x.cumsum().cumsum().gt(1)) 
df.loc[m]
    user  val
2      1    0
3      1    1
7      2    0
9      3    0
10     3    0
11     3    0
12     3    1