我是 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/