通过设置内部的列摆脱重复的行

时间:2018-08-09 10:00:27

标签: python pandas duplicates set

给出此数据示例,我想对包含相同set的行进行重复数据删除,这对于简单数据来说很容易,但是

在此示例中

df1 = pd.DataFrame({'NAME':['foo foo','foo foo fighter','bar','bar bar'],'SET_NAME':[{'foo'},{'foo','fighter'},{'bar'},{'bar'}]})

输出[1]:

    NAME            SET_NAME
0   foo foo         {foo}
1   foo foo fighter {foo, fighter}
2   bar             {bar}
3   bar bar         {bar}

通过使用类似df1.drop_duplicates(subset=['SET_NAME'])的东西(无法散列的类型:“设置”错误),我希望得到这个:

输出[2]:

    NAME            SET_NAME
0   foo foo         {foo}
1   foo foo fighter {foo, fighter}
2   bar             {bar}

请注意,第2行和第3行已删除重复数据,因为它在集合中具有相同的内容。

1 个答案:

答案 0 :(得分:1)

如果将dtype转换为str,然后调用duplicated并使用~反转掩码:

In[131]:
df1.loc[~df1['SET_NAME'].astype(str).duplicated()]

Out[131]: 
              NAME        SET_NAME
0          foo foo           {foo}
1  foo foo fighter  {fighter, foo}
2              bar           {bar}

然后它将能够找到重复项。请注意,当您丢失向量化操作时,我强烈建议在DataFrame中存储非标量值