在Python Pandas arrowprops=dict(arrowstyle='<|-')
中,如果搜索字词“&#39;”,我会尝试将特定标签应用于某行。 column包含已连接的管道分隔列表中的任何可能的字符串。我如何用Pandas做if条件,elif,else语句?
例如:
DataFrame
示例所需输出:
df = pd.DataFrame({'Search term': pd.Series(['awesomebrand inc', 'guy boots', 'ectoplasm'])})
brand_terms = ['awesomebrand', 'awesome brand']
footwear_terms = ['shoes', 'boots', 'sandals']
#Note: this does not work
if df['Search term'].str.contains('|'.join(brand_terms)):
df['Label'] = 'Brand'
elif df['Search term'].str.contains('|'.join(footwear_terms)):
df['Label'] = 'Footwear'
else:
df['Label'] = '--'
我尝试将Search Term Label
awesomebrand inc Brand
guy boots Footwear
ectoplasm --
添加到.any()
语句的末尾,但它会将contains()
标签应用于每一行。
我遇到的大多数示例都是比较列值Brand
是否等于(不是我想要的)或执行数字比较,而不是文本字符串比较。
答案 0 :(得分:3)
这是使用for combo in combos:
pt1 = geometry.Point(positions[combo[0]],evaluate=False)
pt2 = geometry.Point(positions[combo[1]],evaluate=False)
line = geometry.Polygon(pt1,pt2)
try:
if poly.encloses(line.midpoint):
pass
else:
continue
except NotImplementedError:
continue
intersect = geometry.intersection(line,poly)
if len(intersect)>2:
continue
keepcombos.append(combo)
和str.contains()
np.where()
您可以分配给In [26]:
np.where(df['Search term'].str.contains('|'.join(brand_terms)),
'Brand',
np.where(df['Search term'].str.contains('|'.join(footwear_terms)),
'Footwear',
'--'))
Out[26]:
array(['Brand', 'Footwear', '--'],
dtype='|S8')
df['Label']