Python将根据分组删除重复的行

Python将根据分组删除重复的行,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,我有一个Pandas数据框架,其中包含句子及其相应的标记,如: sent_id id token 1 1 1 my 2 1 2 name 3 1 3 is 4 1 4 John 5 1 5 . 6 2 1 John 7 2 2 is 8 2 3 a 9 2 4 good 10 2 5 man

我有一个Pandas数据框架,其中包含句子及其相应的标记,如:

    sent_id id  token
1   1       1   my
2   1       2   name
3   1       3   is
4   1       4   John
5   1       5   .
6   2       1   John
7   2       2   is
8   2       3   a
9   2       4   good
10  2       5   man
11  2       6   .
...

我想从这个数据帧中删除重复的句子,也就是说,根据句子id,如果标记先前匹配,则删除所有行。例如,如果有另一个句子的标记是“我的名字是约翰。”(顺序相同),我想删除该句子的所有行。我怎样才能做到这一点?谢谢。

使用
groupby
并使用token中的值组成句子。检查这些句子是否与
duplicated
重复。使用此结果的索引筛选原始数据帧:

dup_ix = df.groupby('sent_id')['token'].apply(' '.join).duplicated()
good_id = dup_ix[~dup_ix].index
df[df['sent_id'].isin(good_id)]
df['sent'] = np.array([None]*len(df))
for i in df.sent_id.unique():
    df.loc[df.sent_id==i, 'sent'] = df[df.sent_id==i].sent.apply(lambda x :' '.join(df[df.sent_id==i].token))
df = df.drop_duplicates(subset=['id', 'token', 'sent'], keep='first')
df = df.drop(['sent'], axis=1)