我正在尝试删除列 a
和 c
中的重复项。
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/