Python groupby删除带条件的行
我是python新手,我有一个问题 我的原始数据集如下所示: 我想得到: 因此,我们的想法是删除: 单一需求,以及 每个需求只有一个不同id\u用户的行。 我设法用计数器删除单个需求,但我被卡在那里: 我不想手动使用索引,因为我的正确数据集有30000多行 有人能帮我解决这个问题吗?您可以使用: 将数据集加载到数据帧:Python groupby删除带条件的行,python,dataset,conditional-statements,rows,Python,Dataset,Conditional Statements,Rows,我是python新手,我有一个问题 我的原始数据集如下所示: 我想得到: 因此,我们的想法是删除: 单一需求,以及 每个需求只有一个不同id\u用户的行。 我设法用计数器删除单个需求,但我被卡在那里: 我不想手动使用索引,因为我的正确数据集有30000多行 有人能帮我解决这个问题吗?您可以使用: 将数据集加载到数据帧: demand id_user invoice 3 3 101 60 4 3 101 -60
demand id_user invoice
3 3 101 60
4 3 101 -60
5 3 101 60
10 7 104 20
11 7 104 -20
12 7 104 30
13 8 105 10
14 8 105 10
我将在此处创建您的数据框:
import pandas as pd
df = pd.DataFrame({'demand':[1,1,2,3,3,3,4,5,6,7,7,7,7,8,8],'id_user':[101,102,101,101,101,101,103,102,101,101,104,104,104,105,105],'invoice':[10,10,10,60,-60,60,10,10,10,20,20,-20,30,10,10]})
print(df)
输出:
demand id_user invoice
0 1 101 10
1 1 102 10
2 2 101 10
3 3 101 60
4 3 101 -60
5 3 101 60
6 4 103 10
7 5 102 10
8 6 101 10
9 7 101 20
10 7 104 20
11 7 104 -20
12 7 104 30
13 8 105 10
14 8 105 10
让我们使用重复和布尔索引:
df[df.duplicated(subset=['demand','id_user'],keep=False)]
或
让我们使用groupby和filter:
输出数据帧:
demand id_user invoice
3 3 101 60
4 3 101 -60
5 3 101 60
10 7 104 20
11 7 104 -20
12 7 104 30
13 8 105 10
14 8 105 10