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

标签 python pandas if-statement dataframe

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

相关文章:

python - Pandas:如何在 CSV 中查找引发错误的行: "ValueError: could not convert string to float"

具有大/无序文本文件的 Python-pandas

php - PHP 中的 If/Elseif 语句

python-3.x - 我正在学习python中的条件语句。语法错误:Invalid statement.(Python 3.6) [closed]

python - 不和谐重写和YouTube搜索出现问题

python - 将 Numpy 数组拆分为每列的数组

python - 如何在python套接字编程中应用多线程,我尝试过但不起作用?

Python GUI 无法看到全局变量

python - 如何从列中拆分字符串以创建长格式数据框

python - 根据条件使用 python 中另一列的值创建新列