Python 3.x 如何在pandas列中搜索字符串并基于该字符串追加到行中?
我有一个pandas数据框,我想搜索列a中的字符串,如果有匹配项,我想将1追加到新列,如果没有匹配项,我想追加0 我的df当前看起来像: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
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})