Python 首先删除特定值中的行
我想删除第一次出现的用户数等于1的行以及DataFrame中每个唯一用户的前几行 例如,我有下面的Dataframe,我想得到另一个Dataframe,它删除“val”列1中第一次出现的行以及每个用户的前几行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
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