Python Pandas Dataframe Conditional If,Elif,Else

时间:2015-06-04 16:49:46

标签: python if-statement pandas dataframe

在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是否等于(不是我想要的)或执行数字比较,而不是文本字符串比较。

1 个答案:

答案 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']