给出此数据示例,我想对包含相同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行已删除重复数据,因为它在集合中具有相同的内容。
答案 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
中存储非标量值