我想从数据框中删除重复项及其对应的原始值。
Sframe是我的数据帧的名称。 我要检查重复项的字段是' TermName',' SchoolName'和' StudentID'。
以下是我开始的一个例子:
TermName SchoolName StudentID
14-15 a 1
14-15 a 1
14-15 a 1
14-15 b 2
14-15 b 2
14-15 b 3
14-15 c 4
14-15 c 5
14-15 d 6
14-15 e 7
14-15 f 8
以下是我要找的内容:
TermName SchoolName StudentID
14-15 a 1
14-15 a 1
14-15 a 1
14-15 b 2
14-15 b 2
@Jubbles向我展示了如何识别并保留重复和重复的行(即上面第一个表示例中的最后6行):
#unique that are duplicated only column
Sframe['dup_check_1'] = Sframe.duplicated(cols = ['TermName', 'SchoolName', 'StudentID'], take_last = False)
#duplicates only column
Sframe['dup_check_2'] = Sframe.duplicated(cols = ['TermName', 'SchoolName', 'StudentID'], take_last = True)
#remove both from Sframe (df)
Sframe = Sframe[(Sframe['dup_check_1'] == False) & (Sframe['dup_check_2'] == False)]
#delete duplicate checking columns
del Sframe['dup_check_1'], Sframe['dup_check_2']
我试图通过在这里将False更改为True来获取上面代码排除的行(而不是上面包含的行):
Sframe = Sframe[(Sframe['dup_check_1'] == True) & (Sframe['dup_check_2'] == True)]
......但它没有用。这似乎是代码从False到True的简单更改,但它不会返回正确的行数(只有6而不是354)。
有什么想法吗?