2017-07-30 80 views
-2

我有下面的函数来打印dataframe中存在的重复值。KeyError:在用户自定义函数中

def duplicateCrosscheck(dataDF, columnList): 
    print('Duplicate checking', columnList) 
    dataDup = dataDF[dataDF.duplicated([columnList], keep=False)] 
    print(dataDup.values) 
    return 

我会传递数据帧名和列的列表来检查重复项。

duplicateCrosscheck(dataT, "'Country', 'Indicator', 'variable'") 

但是,得到如下错误: KeyError异常: “ '国家', '指示', '可变'”

如果我执行下面的脚本,它工作正常。

dataT[dataT.duplicated(['Country', 'Indicator', 'variable'], keep=False)] 

回答

0

您传递一个字符串,包含引号和逗号。 Python不会将其解释为3个单独的字符串,不会。这些引号和逗号没有任何特殊含义,它们只是字符串中的更多数据。

改变你的函数传递columnList直接:

def duplicateCrosscheck(dataDF, columnList): 
    print('Duplicate checking', columnList) 
    dataDup = dataDF[dataDF.duplicated(columnList, keep=False)] 
    print(dataDup.values) 
    return 

,并通过在实际的列表:

duplicateCrosscheck(dataT, ['Country', 'Indicator', 'variable'])