熊猫数据框在列表列中删除重复项?

时间:2020-07-29 20:54:54

标签: python pandas numpy dataframe

我正在尝试删除ac列中的重复项。

        a      b    c
0  [1, 0]      1    ab
1  [0, 0]      2    bc
2  [1, 0]      3    ab

结果输出:

        a      b    c
0  [1, 0]      1    ab
1  [0, 0]      2    bc

我尝试过的方法: 没有列出a列。 df.drop_duplicates(['a','c'])有效。

没有c列是str。 pd.DataFrame(np.unique(df), columns=df.columns)用于删除重复列表。

如果其中一列是列表和其他字符串,如何进行。

1 个答案:

答案 0 :(得分:1)

方法1

列表在熊猫中不可散列,但您可以使用元组。

df['d'] = df['a'].apply(lambda x : tuple(x) if type(x) is list else x)

          a  b   c       d
0    [1, 0]  1  ab  (1, 0)
1    [0, 0]  2  bc  (0, 0)
2    [1, 0]  3  ab  (1, 0)

然后

df = df.drop_duplicates(subset=['c', 'd'])

结果:

         a  b   c       d
0    [1, 0]  1  ab  (1, 0)
1    [0, 0]  2  bc  (0, 0)

方法2

您可以将包含列表的列转换为str。

df['a'] = df['a'].astype(str)
df = df.drop_duplicates(subset=['a', 'c'])

输出

    a      b    c
0  [1, 0]      1    ab
1  [0, 0]      2    bc