gpt4 book ai didi

python - 将列表简化为类别

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:07 24 4
gpt4 key购买 nike

我是一名新的 Python 开发人员,想知道是否有人可以帮助我解决这个问题。我有一个数据集,其中有一列描述公司类型。我注意到该专栏列出了外科手术等内容。它列出了眼镜、眼镜和验光。因此,我不想在本专栏中列出一个庞大的列表,而是想简单地说明类别,如果您发现一个词包含“眼睛”、“眼镜”或“光学”,则只需将其更改为“眼镜”。我的初始代码如下所示:

def map_company(row):
company = row['SIC_Desc']
if company in 'Surgical':
return 'Surgical'
elif company in ['Eye', 'glasses', 'opthal', 'spectacles', 'optometers']:
return 'Eyewear'
elif company in ['Cotton', 'Bandages', 'gauze', 'tape']:
return 'First Aid'
elif company in ['Dental', 'Denture']:
return 'Dental'
elif company in ['Wheelchairs', 'Walkers', 'braces', 'crutches', 'ortho']:
return 'Mobility equipments'
else:
return 'Other'

df['SIC_Desc'] = df.apply(map_company,axis=1)

虽然这是不正确的,因为它将每个项目都更改为“其他”,所以很明显我的语法是错误的。有人可以帮我简化我试图重新标记的这个专栏吗?谢谢

最佳答案

如果没有您的数据集的确切内容,很难回答,但我可以看出一个错误。根据您的描述,您似乎对这个问题的看法是错误的。您希望其中一个词出现在您的公司描述中,因此它应该如下所示:

if any(test in company for test in ['Eye', 'glasses', 'opthal', 'spectacles', 'optometers'])

但是您可能会遇到案例问题,所以我建议:

company = row['SIC_Desc'].lower()
if any(test.lower() in company for test in ['Eye', 'glasses', 'opthal', 'spectacles', 'optometers']):
return 'Eyewear'

您还需要确保公司是一个字符串并且“SIC_Desc”是一个正确的列名。

最后你的函数看起来像这样:

def is_match(company,names):
return any(name in company for name in names)

def map_company(row):
company = row['SIC_Desc'].lower()
if 'surgical' in company:
return 'Surgical'
elif is_match(company,['eye','glasses','opthal','spectacles','optometers']):
return 'Eyewear'
elif is_match(company,['cotton', 'bandages', 'gauze', 'tape']):
return 'First Aid'
else:
return 'Other'

关于python - 将列表简化为类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com