2017-07-30 84 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'])