删除Pandas记录中的重复值

2024-04-23 20:05:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除列animals的每一行中的重复项。你知道吗

我需要像这篇文章一样的东西,但是用python。由于某种原因,我现在无法弄清楚这一点,我遇到了困难。你知道吗

Remove duplicate records in dataframe

我试过使用drop-duplicates、unique、nunique等。运气不好。你知道吗

你知道吗df.drop\u副本(subset=None,keep=“first”,inplace=False) 测向


df = pd.DataFrame ({'animals':['pink pig, pink pig, pink pig','brown cow, brown cow','pink pig, black cow','brown horse, pink pig, brown cow, black cow, brown cow']})

#input:
    animals
0   pink pig, pink pig, pink pig
1   brown cow, brown cow
2   pink pig, black cow
3   brown horse, pink pig, brown cow, black cow, brown cow

#I would like the output to look like this:
    animals
0   pink pig
1   brown cow
2   pink pig, black cow
3   brown horse, pink pig, brown cow, black cow


Tags: indfremovelikedropblackanimalsrecords
2条回答

如果您希望保留项目的原始顺序(转换为集合会使它们无序),则应使用以下函数。你知道吗

def drop_duplicates(items):
    # `items` is a comma separated string, e.g. "dog, dog, cat".
    result = []
    seen = set()
    for item in items.split(','):
        item = item.strip()
        if item not in seen:
            seen.update([item])
            result.append(item)
    return ', '.join(result)

>>> df['animals'].apply(drop_duplicates)
0                pig
1                cow
2           pig, cow
3    horse, pig, cow
Name: animals, dtype: object

这样做:

df = pd.DataFrame ({'animals':['pink pig, pink pig, pink pig','brown cow, brown cow','pink pig, black cow','brown horse, pink pig, brown cow, black cow, brown cow']})


df['animals2'] = df.animals.apply(lambda x: ', '.join(list(set(x.split(', ')))))

输出:

0                                       pink pig
1                                      brown cow
2                            pink pig, black cow
3    brown cow, brown horse, pink pig, black cow

说明:

我把你的琴弦变成了一张单子。然后我将列表转换为一个集合,以删除重复项。然后我把这个集合转换成一个列表,然后我把列表拆分成一个字符串。有什么不清楚的请告诉我!你知道吗

相关问题 更多 >