Python 从列表中搜索部分字符串,并使用该部分字符串添加列
我习惯于在df.column中搜索我保存在序列中的部分字符串,并习惯于使用在每行中找到的str创建一个新列。我的问题有一部分是由 : 例如,假设我有序列s=pd.series(['cat','hat','dog','fog','pet',]),我想找到s包含['og','at']中任何一个的所有地方,我想得到除pet之外的所有东西 解决办法是:Python 从列表中搜索部分字符串,并使用该部分字符串添加列,python,pandas,Python,Pandas,我习惯于在df.column中搜索我保存在序列中的部分字符串,并习惯于使用在每行中找到的str创建一个新列。我的问题有一部分是由 : 例如,假设我有序列s=pd.series(['cat','hat','dog','fog','pet',]),我想找到s包含['og','at']中任何一个的所有地方,我想得到除pet之外的所有东西 解决办法是: >>> searchfor = ['og', 'at'] >>> s[s.str.contains('|'.join
>>> searchfor = ['og', 'at']
>>> s[s.str.contains('|'.join(searchfor))]
0 cat
1 hat
2 dog
3 fog
dtype: object
但是我想
pet contains
0 cat at
1 hat at
2 dog og
3 fog og
dtype: object
使用,如果不匹配,则获取NaN
s,因此添加:
searchfor = ['og', 'at']
df['new'] = df['pet'].str.extract('(' + '|'.join(searchfor) + ')', expand=False)
df = df.dropna(subset=['new'])
print (df)
pet contains1 new
0 cat at at
1 hat at at
2 dog og og
3 fog og og