我正在尝试删除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)
用于删除重复列表。
如果其中一列是列表和其他字符串,如何进行。
答案 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