Python 根据str中包含的关键字为str系列创建标签

Python 根据str中包含的关键字为str系列创建标签,python,pandas,Python,Pandas,我正试图根据str中包含的关键字为str系列创建一个标签。我对此困惑了一段时间,不知道如何处理它。我试过这个: mirantis['cat_label'] = np.where(pd.Series(mirantis.Mirantis_Address).str.contains('openstack|kubernetes'),'openstack', 'kubernetes') 它限制了我两个关键字,但本质上我需要无限的关键字。有什么想法吗 示例数据: https://www.mirantis.

我正试图根据str中包含的关键字为str系列创建一个标签。我对此困惑了一段时间,不知道如何处理它。我试过这个:

mirantis['cat_label'] = np.where(pd.Series(mirantis.Mirantis_Address).str.contains('openstack|kubernetes'),'openstack', 'kubernetes')
它限制了我两个关键字,但本质上我需要无限的关键字。有什么想法吗

示例数据:

https://www.mirantis.com/
https://www.mirantis.com/blog/how-to-increase-the-probability-of-a-vnf-working-with-your-cloud-qa/
https://www.mirantis.com/careers/
https://www.mirantis.com/company/press-center/in-the-media/
https://www.mirantis.com/software/mcp/sdn/
https://training.mirantis.com/openstack-courses-exams/
https://www.mirantis.com/services/transfer/
https://training.mirantis.com/kubernetes-docker-courses-exams/
https://www.mirantis.com/solutions/big-data-analytics/
https://www.mirantis.com/cloud-case-studies/
https://www.mirantis.com/services/transfer-services/
https://www.mirantis.com/cloud-videos/
https://www.mirantis.com/company/locations/
https://www.mirantis.com/blog/admit-it-vnf-certification-is-marketing-bs/
https://info.mirantis.com/mirantis-application-platform-beta
https://www.mirantis.com/support/enterprise-support-services/
https://www.mirantis.com/company/leadership/board-of-directors/
https://training.mirantis.com/certification/
https://www.mirantis.com/get-started/
https://www.mirantis.com/software/mcp/
https://docs.mirantis.com/
https://info.mirantis.com/live-demo
https://www.mirantis.com/solutions/network-functions-virtualization-nfv/
https://www.mirantis.com/services/build/
https://training.mirantis.com/
https://www.mirantis.com/software/ceph/
https://www.mirantis.com/solutions/container-technologies/
https://info.mirantis.com/eBook-MCP-Deployment-Guide_Landing-Page
https://www.mirantis.com/company/about/
https://www.mirantis.com/software/kubernetes/
https://www.mirantis.com/blog/how-to-deploy-spinnaker-on-kubernetes-a-quick-and-dirty-guide/
https://info.mirantis.com/webinar-vnf-validation-metaswitch
https://www.mirantis.com/company/press-center/info/
https://www.mirantis.com/company/investors/
https://www.mirantis.com/solutions/agile-enterprise/
https://www.mirantis.com/blog/introducing-mirantis-cloud-platform-mcp-spring-2018-release/
https://www.mirantis.com/partners/
https://www.mirantis.com/services/managed-services/
https://www.mirantis.com/services/operate/
https://www.mirantis.com/software/openstack/
https://www.mirantis.com/blog/
https://www.mirantis.com/cloud-brochures/
https://www.mirantis.com/cloud-events/
https://info.mirantis.com/contact-us
https://www.mirantis.com/cloud-webinars/
https://www.mirantis.com/software/application-platform/
https://info.mirantis.com/webinar-kubernetes-1-11
https://www.mirantis.com/blog/whats-new-in-kubernetes-1-11-the-qa/
https://www.mirantis.com/software/community/
https://www.mirantis.com/services/build-services/
我认为需要:


在您的问题中添加数据样本和预期输出。请构造一个。样本输入、样本输出(当前和所需)。另外,请确保包含用于实例化示例数据帧的代码,而不仅仅是它们的字符串表示形式。请自由修改
mirantis=pd.DataFrame({'mirantis_Address':['openstack ds','sd kubernetes f','clouds','sds']})
我认为需要
mirantis['cat_label']=mirantis.mirantis_Address.str.extract('(openstack | kubernetes | cloud)
一个条件怎么可能有多个输出?对于n个不同的替换,您必须指定n-1个条件。输入和输出示例有助于正确理解您的需求。
L = ['openstack','kubernetes','cloud']
pat = '|'.join(r"\b{}\b".format(x) for x in L)
mirantis['cat_label'] = mirantis.Mirantis_Address.str.extract('('+ pat + ')', expand=False)
print (mirantis.head(10))
                                    Mirantis_Address   cat_label
0                          https://www.mirantis.com/         NaN
1  https://www.mirantis.com/blog/how-to-increase-...       cloud
2                  https://www.mirantis.com/careers/         NaN
3  https://www.mirantis.com/company/press-center/...         NaN
4         https://www.mirantis.com/software/mcp/sdn/         NaN
5  https://training.mirantis.com/openstack-course...   openstack
6        https://www.mirantis.com/services/transfer/         NaN
7  https://training.mirantis.com/kubernetes-docke...  kubernetes
8  https://www.mirantis.com/solutions/big-data-an...         NaN
9       https://www.mirantis.com/cloud-case-studies/       cloud