python - Pandas Dataframe 在列表列中删除重复项?

标签 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) 适用于删除重复列表。

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

最佳答案

方法一

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

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

您可以将包含列表的列转换为字符串。

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

关于python - Pandas Dataframe 在列表列中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63162286/

相关文章:

python - 如何分隔 Pandas 中的顺序组?

python - 使用 Big Pandas DataFrame 的列值创建 Mini/Sub 数据框

python - np.exp(x) 当 x 很小时

python - 具有可变深度的多级默认字典?

python - 在 Pandas 中查找包含另一列的行中的特定值的列名称

python - 从 groupby 对象创建字典,Python

python - Pandas df.resample() : Specify NaN threshold for calculation of mean

python - 使用 Python 查找最相似的行

python - Theano conv2d 和 max_pool_2d

python - 根据值的唯一性删除 numpy 数组的行