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
我有一个包含列表的数据框列,我想从各个列表中删除重复值。
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