dataframe中返回的函数的Python结果不正确

dataframe中返回的函数的Python结果不正确,python,Python,我试图创建一个简单的数据框架,导入一个CSV文件,其中包含3列[“日期”、“金额”、“说明”]作为银行交易。 然后应用一个代码。我创建了一个简单的函数来返回代码 def codelookup(string): code_dict = {'GOLFBOX':'Golf Clubs','HARVEY NORMAN': 'TECH','AMAZON': 'TECH'} for code in code_dict: if code in st

我试图创建一个简单的数据框架,导入一个CSV文件,其中包含3列[“日期”、“金额”、“说明”]作为银行交易。 然后应用一个代码。我创建了一个简单的函数来返回代码

   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个事务中的每个事务中,随函数返回的结果都是“Other”。它没有正确地将“描述”发送到函数,因为函数使用简单的调用

我是一个新手,所以对我的问题的描述表示歉意,希望看到一个更干净的方法来进行查找

问候 JDLove

使用

方法。您需要为每一行逐个调用此函数,而不是一次传递一个系列。 试试这个:

df_data["Code"] = df_data['Description'].apply(lambda x: codelookup(x))

您将
['GOLFBOX OSBORNE PARK OSBORNE PARK','CLUBLINKS MANAGEMENT p COMO','WOOLWORTHS 4301 PERTH']
作为参数发送到
codelookup
中,其中列表不是字符串,您使用的是条件
如果字符串中的代码:
,如果匹配任何记录,它实际上会查找上面列表中的单词(并非每个单词都在一条记录中)。 您可以尝试转换字符串形式的列表,然后尝试:

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

太棒了,谢谢你的建议,它工作得很好,真的很酷。