首页 > 解决方案 > 匹配字符串的Pythonic方式在数据框上创建列?

问题描述

如何添加/创建一个返回 1 的列,如果列中的值包含 < 或 <<,如果不包含,则为 0,基于列 df['value']?

df['INDICATOR'] = [1 if x.str.contains("<|<<") else 0 for x in df['value']]

我上面的尝试返回了一个属性错误:'str object has no attrbute 'str'

标签: pythonpandasfunctionif-statementlist-comprehension

解决方案


然后创建掩码Series.astypeSeries.viewnumpy.where转换True/False1/0

m = df['value'].str.contains("<|<<")
#simplify mask - if contains << then contain <
m = df['value'].str.contains("<")


df['INDICATOR'] = m.astype(int)

df['INDICATOR'] = m.view('i1')

df['INDICATOR'] = np.where(m, 1, 0)

推荐阅读