如何用Python在DataFrame中新增匹配指定字符串的0/1指示列
错误原因
你在列表推导中遍历df['value']时,拿到的迭代元素x是单个Python原生字符串对象,.str是Pandas Series类型专属的字符串处理访问器,不能作用于单个字符串,因此触发了属性错误。
符合Pythonic风格的正确实现
优先使用Pandas矢量化操作,无需写循环,执行效率更高,代码更简洁:
# 只要value列包含<即满足条件(匹配<、<<两种场景),布尔值直接转int即为1/0 df['INDICATOR'] = df['value'].str.contains('<', regex=False).astype(int)
如果需要严格通过正则匹配<或<<两种规则,可以开启正则匹配:
df['INDICATOR'] = df['value'].str.contains(r'<|<<', regex=True).astype(int)
列表推导修正写法(仅适合小数据量场景)
如果要沿用列表推导的写法,直接调用Python原生字符串的判断方法即可:
df['INDICATOR'] = [1 if '<' in x else 0 for x in df['value']]
内容的提问来源于stack exchange,提问作者Mazil_tov998
相关产品推荐
相关产品推荐

