清理数据重复的列数据(Python)

时间:2015-04-03 04:06:47

标签: python python-2.7

我有以下部分清理的DataFrame(下面的示例):

Year    Artist                                        Song
2009    Black Eyed Peas                               Boom Boom Pow
1984    U2                                            Bad
1998    Twain, ShaniaShania Twain                     You Belong With Me
2009    Gaga, LadyLady Gaga featuring Colby O'Donis   Just Dance
2008    Winehouse, AmyAmy Winehouse                   Rehab

在#34;艺术家"栏中,有些数据是干净的(例如' U2'黑眼豆豆')但有些数据需要是进一步清理 - 例如Shania Twain的记录,她的名字重复了两次,Lady Gaga记录了她的名字两次,但Colby O' Donis被说了一次。理想情况下,我希望它看起来像这样:

Year    Artist                                        Song
2009    Black Eyed Peas                               Boom Boom Pow
1984    U2                                            Bad
1998    Shania Twain                                  You Belong With Me
2009    Lady Gaga featuring Colby O'Donis             Just Dance
2008    Amy Winehouse                                 Rehab

我一直试图使用拆分,替换等等 - 这些帮助我进入了这个阶段 - 但发现无法进展,因为“艺术家”之间没有一致性。柱。

如果有人可以请求帮助我,我将不胜感激。 df有大约120,000行,所以我需要能够继续在Python中清理它。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

这是我提出的解决方案,但这假设当艺术家姓名为" lastName,firstNamefirstName lastName"时,您的复制将始终发生。因为否则,AmyAmy Winehouse实际上可能是一个乐队的名字而且它将是一个不正确的替代品

def removeDuplicateArtist(stringInput):
    if "," in stringInput:
        names = stringInput.split(" ")
        artist = names[1][int(len(names[1])/2):] + " "
        names.remove(names[0])
        names.remove(names[0])
        for i in names:
            artist += str(i) + " "
        return artist