gpt4 book ai didi

python - 我如何创建一个规则集来根据搜索子字符串在 Pandas 中为特定列分配值?

转载 作者:行者123 更新时间:2023-11-28 21:39:37 24 4
gpt4 key购买 nike

我是 Python(和 Pandas 库)的新手,需要在其中重新创建一些 SQL 代码。

从表面上看,我的任务非常简单,我有几个列,我需要在它们中搜索特定的字符串,如果它们存在,则在类别列中放置一个值。

例如

import pandas as pd

phone_ds= [('IPHONE_3UK_CONTRACT', 968), ('IPHONE_O2_SIMONLY', 155), ('ANDROID_3UK_PAYG', 77), , ('ANDROID_VODAF_CONTRACT', 973)]

a = pd.DataFrame(data=phone_ds, columns=['Names', 'qty'])

def f(a):
if a['Names'].str.contains('3UK'):
company = 'Three'
if a['Names'].str.contains('iPhone'):
OS = 'iOS'
.
.
.
etc

有没有比列出 if 语句更好(更有效)的方法?

我如何将结果添加到新列中?

谢谢

最佳答案

我会这样做:

In [32]: d = {'3UK':'Three', '(?:IPHONE|IPAD).*':'iOS',
'VODAF.*':'Vodafone', 'PAY.*':'PayG'}

In [33]: a[['OS','Company','Payment']] = \
a.Names.str.upper().str.split('_', expand=True).replace(d, regex=True)

In [34]: a
Out[34]:
Names qty OS Company Payment
0 IPHONE_3UK_CONTRACT 968 iOS Three CONTRACT
1 IPHONE_O2_SIMONLY 155 iOS O2 SIMONLY
2 ANDROID_3UK_PAYG 77 ANDROID Three PayG
3 ANDROID_VODAF_CONTRACT 973 ANDROID Vodafone CONTRACT

关于python - 我如何创建一个规则集来根据搜索子字符串在 Pandas 中为特定列分配值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46552587/

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