Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在pandas列中搜索字符串并基于该字符串追加到行中?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何在pandas列中搜索字符串并基于该字符串追加到行中?

Python 3.x 如何在pandas列中搜索字符串并基于该字符串追加到行中?,python-3.x,pandas,Python 3.x,Pandas,我有一个pandas数据框,我想搜索列a中的字符串,如果有匹配项,我想将1追加到新列,如果没有匹配项,我想追加0 我的df当前看起来像: Column A | Column B | Column C company one | 314 | 0.9 company one toast | 190 | 0.3 www.companyone | 380 | 0.87 companyone home | 850

我有一个pandas数据框,我想搜索列a中的字符串,如果有匹配项,我想将1追加到新列,如果没有匹配项,我想追加0

我的df当前看起来像:

Column A          | Column B | Column C
company one       |   314    |   0.9
company one toast |   190    |   0.3
www.companyone    |   380    |   0.87
companyone home   |   850    |   0.1
toaster supplies  |   1100   |   0.5
toast rack        |   200    |   0.7
...
我正在尝试编写一个函数,它将读取a列,如果与company one或companyone匹配,则在行的末尾追加1。如果没有匹配项,则追加0。我想要的输出是:

    Column A          | Column B | Column C | Branded
    company one       |   314    |   0.9    |   1
    company one toast |   190    |   0.3    |   1
    www.companyone    |   380    |   0.87   |   1
    companyone home   |   850    |   0.1    |   1
    toaster supplies  |   1100   |   0.5    |   0
    toast rack        |   200    |   0.7    |   0
    ...
我尝试过这个函数:

def branded(table):

    if 'company.*?one' in table[table['Column A']]:
        table['Branded'] = 1
    else:
        table['Branded'] = 0

    return table.head()

但是我得到一个键错误。我不确定我错过了什么

您可以这样做:

df['Branded'] = df['Column A'].str.contains('company.*?one')*1

我认为zipa发布的解决方案更好。不过,我想分享一下,这是一个调整版本,以防要查找的字符串是完全不同的模式。您可以将单词添加到列表中,然后执行类似操作:

import pandas as pd

df = pd.DataFrame({'column':['company one','companyone', 'company two']})
search = ['company one', 'companyone']
string_search = '|'.join(search)
df['flag'] = df['column'].str.contains(string_search)
df['flag'] = df['flag'].map({True: 1, False: 0})