循环数据帧以删除重复项

2024-05-19 01:37:04 发布

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

例如,我有以下几点:

**names**           **score**       WhatIWant
Jones, Tom, Eddy       119.        Jones, Tom, Eddy
Nick, Tim, Bob         222.        Nick, Tim, Bob
Jones, Eddy, Luke      221.            Luke
Timmy, Jones, Sam        112.      Timmy, Sam

我需要循环遍历这个数据帧,删除“名称”列中的所有重复名称,即删除前面几行中出现的名称

例如,在第1行和第3行中,重复了Jones和Eddy,我希望将它们从第3行中删除


Tags: 数据名称namessamnickbobscoretimmy
1条回答
网友
1楼 · 发布于 2024-05-19 01:37:04
import pandas as pd
df = pd.DataFrame()
df['names'] = ['Jones, Tom, Eddy', 'Nick, Tim, Bob', 'Jones, Eddy, Luke', 'Timmy, Jones, Sam']
df['scores'] = [119, 222, 221, 112]

names_till_now = []
def get_unique_names(names_till_now, names_string):
    names_list = names_string.split(",")
    names_list = [name.strip() for name in names_list]
    names_unique = [i for i in names_list if i not in names_till_now]
    names_till_now += names_list
    return ', '.join(name for name in names_unique)

df['names'] = df.apply(lambda x: get_unique_names(names_till_now, x['names']),axis=1)
df

输出结果如下


    names                     scores
0   Jones, Tom, Eddy          119
1   Nick, Tim, Bob            222
2   Luke                      221
3   Timmy, Sam                112

相关问题 更多 >

    热门问题