我正在尝试删除所有有重复项的行。我只想要唯一的行。我已经尝试了drop_duplicates()的keep = False参数,` `subset =订单ID,项目代码,但它就是不正确。
假设我的数据帧如下所示
|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行。(实际的数据集有更多的列。)
发布于 2021-11-08 16:27:15
不确定你的问题是什么。工作正常。
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发布于 2021-11-08 16:23:33
尝试修改您的子集以仅包含ORDER ID:
df.drop_duplicated(subset=['ORDER ID'])发布于 2021-11-08 16:29:45
很可能是您没有正确设置数据帧。你可能在做什么
df.drop_duplicates()但这将无法覆盖您之前的值。相反,你应该做的是
df = df.drop_duplicates()如果您不能让drop_duplicates工作,您可以使用numpy.unique作为变通方法。
df['ORDER_ID'] = np.unique(df['ORDER_ID'])
df['ITEM_CODE'] = np.unique(df['ITEM_CODE']) https://stackoverflow.com/questions/69886639
复制相似问题