python - 根据同一熊猫数据框的另一列中是否存在子字符串为列分配值
问题描述
好的,我有一个 DataFrame,其中包含单独列中的名称和值。但是,我需要以不同的方式对待某些值。幸运的是,要区别对待的值的名称中包含字符串“Rate”或“ratio”。
我想做的是创建一个新列,称为“比率/比率?”,当这两个字符串之一出现在名称中时,它被分配一个值“是”。否则被赋值为“No”
到目前为止,我已经创建了所有值都分配给“否”的列,并且想要一些方法来逐行迭代数据框。
我相信答案在于 pandas.loc 和 numpy.where 的某种组合,但我遇到了一些我不熟悉的错误,主要是
ValueError("cannot reindex from a duplicate axis")
我尝试了很多不同的方法来解决这个问题,最近的效果是:
appendedAggregate.loc[appendedAggregate['Rate/Ratio?'].where(appendedAggregate.loc[appendedAggregate['KPI Alias'].str.contains('Rate' or 'ratio')])] = 'Yes'
这appendedAggregate
是数据框。
解决方案
您可以df.apply
在列中使用 lambda。使用|
instr. contains
将OR
运算符添加到您的单词列表中。
(?i)rate|ratio
对于不区分大小写的匹配
尝试这个:
df['Rate/Ratio?'] =df['name'].apply(lambda x: 'Yes' if x.str.contains(r'Rate|ratio') else 'No')
推荐阅读
- java - 如何批量更新弹性搜索多个id?
- c++ - 创建一个重复字符 n 次的编译时间字符串
- laravel - 如果用户成功登录并在 laravel-8 中返回该数据,如何从迁移表中获取特定列数据(角色列)?
- c# - 正则表达式无法检测到,(逗号)
- pandas - 查找哪些列包含/匹配另一列的智能/pythonic方法
- c# - 扫描 DHL 标签时出现问题 Identcode C# XAMARIN EMDK
- macos - macOS11(虚拟机或docker容器)启动时如何设置自动登录
- php - 将下划线 URL 的 PHP 查询转换为破折号/连字符 URL
- javascript - 使用 javascript 的牛顿摇篮。未捕获的类型错误:无法读取未定义 index.js.90 的属性“x”
- android - 在不使用 Play App Signing 的情况下使用 v2 签名方案签署应用程序包