Python,从列表的数据框列中删除重复值

Python, Remove duplicate values from dataframe column of lists

我有一个包含列表的数据框列,我想从各个列表中删除重复值。

d = {'colA': [['UVB', 'NER', 'GGR', 'NER'], ['KO'], ['ERK1', 'ERK1', 'ERK2'], []]}
df = pd.DataFrame(data=d)

我想从列表中删除重复的 'NER' 和 'ERK1'。

我试过:

df['colA'] = set(tuple(df['colA']))

我收到错误消息: 类型错误:不可散列的类型:'list'

问题是您有一个列表元组,这就是 set 命令不起作用的原因。您应该遍历整个元组。

ans = tuple(df['colA']) for i in range(len(ans)) df['colA'].iloc[i]=set(ans[i])

您可以使用 pandas 函数的 apply() 方法从列表中删除重复值,如下所示。

import pandas as pd
d = {'colA': [['UVB', 'NER', 'GGR', 'NER'], ['KO'], ['ERK1', 'ERK1', 'ERK2'], []]}
df = pd.DataFrame(data=d)

df['colA'].apply(lambda x: list(set(x)))

#output
0    [NER, UVB, GGR]
1               [KO]
2       [ERK2, ERK1]
3                 []
Name: colA, dtype: object