Python从数据帧中返回的函数不正确的结果

时间:2018-12-31 06:29:32

标签: python

我正在尝试创建一个简单的数据框,该数据框导入一个包含3列['Date','Amount','Description']银行交易的CSV文件。  然后应用代码。我创建了一个简单的函数来返回代码。

   def codelookup(string):
        code_dict = {'GOLFBOX':'Golf Clubs','HARVEY NORMAN': 'TECH','AMAZON': 'TECH'}
        for code in code_dict:
            if code in string:
                return str(code_dict[code])
                break
        else:
                return 'Other'

    df_data = pd.DataFrame({'Date': ['28/12/18','28/12/18','27/12/18'], 
                       'Amount': [-307.99,-14,-43.86], 
                       'Description': ['GOLFBOX OSBORNE PARK OSBORNE PARK','CLUBLINKS MANAGEMENT P COMO','WOOLWORTHS 4301 PERTH']})
    df_data["Code"] = codelookup(df_data['Description'])
    df_data

在3个事务中的每个事务中,使用函数返回的结果都是“其他”。由于该函数仅通过一个简单的调用就可以正常发送“说明”给该函数。

我是一个新手,所以很抱歉对我的问题进行描述,希望看到一种更干净的方法进行查找。

问候 JDLove

2 个答案:

答案 0 :(得分:1)

使用

  

apply

方法。您需要为每一行一个接一个地调用此函数,而不是一次通过Pandas Series。 试试这个:

MappedSuperclass

答案 1 :(得分:0)

您正在将['GOLFBOX OSBORNE PARK OSBORNE PARK','CLUBLINKS MANAGEMENT P COMO','WOOLWORTHS 4301 PERTH']作为参数发送到列表中不是字符串的codelookup,您正在使用条件if code in string:,如果与任何记录匹配,则实际上在上面列表中查找单词(不是单个记录中的每个单词)。 您可以尝试将列表转换为字符串,然后尝试:

codelookup(str(df_data['Description']))