Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python groupby删除带条件的行_Python_Dataset_Conditional Statements_Rows - Fatal编程技术网

Python groupby删除带条件的行

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

我是python新手,我有一个问题

我的原始数据集如下所示:

我想得到:

因此,我们的想法是删除:

单一需求,以及 每个需求只有一个不同id\u用户的行。 我设法用计数器删除单个需求,但我被卡在那里:

我不想手动使用索引,因为我的正确数据集有30000多行

有人能帮我解决这个问题吗?

您可以使用:

将数据集加载到数据帧:

    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