我正在尝试创建一个简单的数据框,该数据框导入一个包含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
答案 0 :(得分:1)
答案 1 :(得分:0)
您正在将['GOLFBOX OSBORNE PARK OSBORNE PARK','CLUBLINKS MANAGEMENT P COMO','WOOLWORTHS 4301 PERTH']
作为参数发送到列表中不是字符串的codelookup
,您正在使用条件if code in string:
,如果与任何记录匹配,则实际上在上面列表中查找单词(不是单个记录中的每个单词)。
您可以尝试将列表转换为字符串,然后尝试:
codelookup(str(df_data['Description']))