我是python的新手,我有一个问题。
我的原始数据集就像这样: Original dataset
我希望得到:final dataset
所以想法是删除:
我设法用Counter()删除单个需求但是我被困在那里: probleme here
我不想手动使用索引,因为我的正确数据集有超过30000行。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
您可以使用Pandas:
将数据集加载到数据框中:
我将在此处创建您的数据框:
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
让我们使用duplicated
和布尔索引:
df[df.duplicated(subset=['demand','id_user'],keep=False)]
OR
让我们使用groupby
和filter
:
df.groupby(['demand','id_user']).filter(lambda x: x.demand.size != 1)
输出数据帧:
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