首页 > 解决方案 > 循环遍历熊猫数据框以删除重复项

问题描述

例如我有以下df:

**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 行重复琼斯和艾迪,我希望将它们从第 3 行中删除。

标签: pythonpandas

解决方案


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

推荐阅读