首页 > 解决方案 > 仅从数据框中获取唯一行

问题描述

我正在尝试删除所有重复的行。我只想要唯一的行。我已经尝试使用 `subset = [ORDER ID, ITEM CODE] 的keep = False参数drop_duplicates(),它只是没有做正确的事情。

假设我的数据框看起来像这样

|ORDER ID | ITEM CODE |
123         XXX    
123         YYY
123         YYY
456         XXX
456         XXX
456         XXX
789         XXX
000         YYY

我希望它看起来像这样:

|ORDER ID | ITEM CODE |
123         XXX    
789         XXX
000         YYY

如您所见,子集将是订单 ID 和项目代码列,理想情况下我们会丢失第 2-6 行。(实际的数据集有更多的列。)

标签: pythonpandasdataframe

解决方案


不确定你的问题是什么。工作正常。

import pandas as pd


data = [[123,         'XXX', 11],    
[123,         'YYY', 22],
[123,         'YYY', 33],
[456,         'XXX', 44],
[456,         'XXX', 55],
[456,         'XXX', 66],
[789,         'XXX',77],
[000,         'YYY',88]]

columns = ['ORDER ID','ITEM CODE','extra column']

df = pd.DataFrame(data, columns=columns)

df = df.drop_duplicates(subset = ['ORDER ID','ITEM CODE'], keep=False)

输出:

print(df)
   ORDER ID ITEM CODE  extra column
0       123       XXX            11
1       123       YYY            22
2       123       YYY            33
3       456       XXX            44
4       456       XXX            55
5       456       XXX            66
6       789       XXX            77
7         0       YYY            88

print(df)
   ORDER ID ITEM CODE  extra column
0       123       XXX            11
6       789       XXX            77
7         0       YYY            88

推荐阅读