首页 > 解决方案 > Pandas 在由列表组成的元素上放置重复项

问题描述

说我的数据框是:

df = pandas.DataFrame([[[1,0]],[[0,0]],[[1,0]]])

产生:

        0
0  [1, 0]
1  [0, 0]
2  [1, 0]

如果我写的话,我想删除重复项,并且只获取元素 [1,0] 和 [0,0]:

df.drop_duplicates()

我收到以下错误:TypeError: unhashable type: 'list'

如何调用 drop_duplicates()?

更笼统地说:

df = pandas.DataFrame([[[1,0],"a"],[[0,0],"b"],[[1,0],"c"]], columns=["list", "letter"])

我想调用 df["list"].drop_duplicates(),所以 drop_duplicates 适用于系列而不是数据框?

标签: pythonpython-3.xpandas

解决方案


您可以使用numpy.unique()功能:

>>> df = pandas.DataFrame([[[1,0]],[[0,0]],[[1,0]]])
>>> pandas.DataFrame(np.unique(df), columns=df.columns)
        0
0  [0, 0]
1  [1, 0]

如果要保留订单结帐:numpy.unique 保留订单


推荐阅读