如何在极坐标中的多个条件下使用“when”、“then”和“otherwise”?

2023-12-26

我有一个包含三列的数据集。将检查 A 列中的字符串。如果字符串匹配foo or spam,同一行中其他两列的值L and G应该改为XX。为此我尝试了以下方法。

df = pl.DataFrame(
    {
        "A": ["foo", "ham", "spam", "egg",],
        "L": ["A54", "A12", "B84", "C12"],
        "G": ["X34", "C84", "G96", "L6",],
    }
)
print(df)

shape: (4, 3)
┌──────┬─────┬─────┐
│ A    ┆ L   ┆ G   │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ str │
╞══════╪═════╪═════╡
│ foo  ┆ A54 ┆ X34 │
│ ham  ┆ A12 ┆ C84 │
│ spam ┆ B84 ┆ G96 │
│ egg  ┆ C12 ┆ L6  │
└──────┴─────┴─────┘

预期结果

shape: (4, 3)
┌──────┬─────┬─────┐
│ A    ┆ L   ┆ G   │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ str │
╞══════╪═════╪═════╡
│ foo  ┆ XX  ┆ XX  │
│ ham  ┆ A12 ┆ C84 │
│ spam ┆ XX  ┆ XX  │
│ egg  ┆ C12 ┆ L6  │
└──────┴─────┴─────┘

我试过这个

df = df.with_column(
    pl.when((pl.col("A") == "foo") | (pl.col("A") == "spam"))
    .then((pl.col("L")= "XX") & (pl.col( "G")= "XX"))
    .otherwise((pl.col("L"))&(pl.col( "G")))
)

然而,这是行不通的。有人可以帮我弄这个吗?


要将多列设置为相同的值,您可以使用:

df.with_columns(
   pl.when(pl.col("A").is_in(["foo", "spam"]))
     .then(pl.lit("XX"))
     .otherwise(pl.col("L", "G"))
     .keep_name()
)
shape: (4, 3)
┌──────┬─────┬─────┐
│ A    ┆ L   ┆ G   │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ str │
╞══════╪═════╪═════╡
│ foo  ┆ XX  ┆ XX  │
│ ham  ┆ A12 ┆ C84 │
│ spam ┆ XX  ┆ XX  │
│ egg  ┆ C12 ┆ L6  │
└──────┴─────┴─────┘

.is_in()可以使用而不是多个== x | == y chains.

要使用不同的值一次更新多个列,您可以使用.map()和一本字典:

df.with_columns(
   pl.when(pl.col("A").is_in(["foo", "spam"]))
     .then(pl.col("L", "G").map(
        lambda col: {
           "L": "XX",
           "G": "YY",
        }.get(col.name)))
     .otherwise(pl.col("L", "G"))
)
shape: (4, 3)
┌──────┬─────┬─────┐
│ A    ┆ L   ┆ G   │
│ ---  ┆ --- ┆ --- │
│ str  ┆ str ┆ str │
╞══════╪═════╪═════╡
│ foo  ┆ XX  ┆ YY  │
│ ham  ┆ A12 ┆ C84 │
│ spam ┆ XX  ┆ YY  │
│ egg  ┆ C12 ┆ L6  │
└──────┴─────┴─────┘

使用时.map整个列都被传递(作为pl.Series)意味着您也可以根据需要操纵它:

df.with_columns(
   pl.when(pl.col("A").is_in(["foo", "spam"]))
     .then(pl.col("L", "G").map(
        lambda col: {
           "L": col.str.to_lowercase(),
           "G": "prefix_" + col
        }.get(col.name)))
     .otherwise(pl.col("L", "G"))
)
shape: (4, 3)
┌──────┬─────┬────────────┐
│ A    ┆ L   ┆ G          │
│ ---  ┆ --- ┆ ---        │
│ str  ┆ str ┆ str        │
╞══════╪═════╪════════════╡
│ foo  ┆ a54 ┆ prefix_X34 │
│ ham  ┆ A12 ┆ C84        │
│ spam ┆ b84 ┆ prefix_G96 │
│ egg  ┆ C12 ┆ L6         │
└──────┴─────┴────────────┘
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在极坐标中的多个条件下使用“when”、“then”和“otherwise”? 的相关文章

随机推荐

  • 悄悄更新正在进行的通知

    我有一项可以无线连接到其他设备的服务 启用该服务后 我会收到一条持续通知 表明该服务已启用 启用服务后 用户即可连接到另一台设备 此时 我想更新正在进行的通知以说明已连接的设备的名称 这很容易通过调用来完成startForeground O
  • 并发链表

    我正在尝试用 C 设计一个允许并发访问的链表 显然 对该列表使用单个锁的效率非常低 因为不相交的区域可能会并行更新 现在除了为每个节点存储一个锁之外我还有什么选择 另外 在这种情况下 非阻塞版本会是更好的选择吗 有相关链接吗 EDIT 谢谢
  • 非常短的 jQuery 图像幻灯片

    我正在寻找使用 jQuery 创建淡入淡出图像幻灯片的最短方法 我在谷歌上找到的例子总是有很多不必要的特殊内容 我很难理解它们 幻灯片需要投射到现有图像上 img src myImage jpg 使用以下图像 imgArray img1 j
  • Spring mvc @RequestBody如何使用@EmbeddedId解析JPA实体

    我有 2 个实体 User 和 UserAlias 用户有复合PK 我有一些疑问 如何在 Spring MVC 控制器中解析 JSON 以填充 User 和 UserPK 对象 例如使用以下数据 id 1 名称 新用户 别名 别名1 别名2
  • Qt Creator 找不到标头(显示:“没有这样的文件或目录”)

    我如何告诉 Qt Creator 2 4 1 基于 Qt 4 7 4 32 位 在哪里查看默认情况下对于头文件 当我在 Qt Creator 中打开一个 C 文件并说 include
  • 是否可以使用 JPA 和 hibernate 扫描 jar 文件中的实体

    我有以下情况 项目 A 包含几个实体并且是独立的 项目 B 包含几个实体并且是独立的 项目 C 包含很少的实体 并且依赖于项目 A 和项目 B 我正在使用 Maven 来管理依赖项和构建 当我尝试测试项目 A 和项目 B 时 一切进展顺利
  • Android 在视图内启动应用程序

    好吧 我有一个应用程序 我想使用其他应用程序 例如 我有一个应用程序 除了目录查找之外 它可以执行很多操作 因为已经有一个应用程序可以为我的学校执行此操作 我知道我可以有意图地启动应用程序 但这也会使它们远离我的应用程序的导航菜单 无论如何
  • 将纬度/经度转换为城市名称? (反向地理定位)

    我正在 Codeigniter PHP jQuery 中创建一个工作委员会 雇主可以在其中输入他们的位置 我们使用 Google 地图 API 来绘制它 虽然这已经产生了很棒的可用性结果 但问题是 当我们尝试向求职者显示这些位置时 他们会感
  • WPF 如何存储语言字典?

    根据https msdn microsoft com en us library system windows controls spellcheck v vs 110 aspx https msdn microsoft com en us
  • Python Pandas 跨列累积和并在另一个新列中获取结果

    我有包含 col1 col10 的数据框 我想计算跨列的累积总和并动态创建新列 即 cum col1 cum col10 我研究了 cumsum 但这给出了最终的累积和 如何在创建新列时实现累积总和 数据框看起来像 id col1 col2
  • imagecreatefrompng 根本不起作用

    我已经用 mime 类型检查了文件 如果是 jpg 或 gif 则可以完美使用 src imagecreatefromjpeg tmpName and src imagecreatefromgif tmpName 但如果图像是png src
  • 重复单词的正则表达式

    我是正则表达式新手 我不太清楚如何编写一个正则表达式来 匹配 任何重复的连续单词 例如 巴黎在the the spring Not 那个那个相关的 你笑什么 是my my正则表达式那么糟糕 是否有一个正则表达式可以匹配上面所有的粗体字符串
  • 使用 Notepad++ 通过 FTP 连接到服务器

    我正在使用 Notepad 6 5 3 版本 来编辑我的文件 我想使用 Notepad 连接到我的服务器 我使用这个方法 打开 Notepad gt 插件 gt NppFTP gt 显示 NppFTP 窗口 在 NppFTP 窗口中 Cli
  • 在 .NET 中将复杂的布尔条件从字符串转换为布尔值

    我需要将复杂的表达式从字符串解析为布尔值 它只能包含 布尔值 真 假 括号 AND OR 操作数 Eg bool Parse true false false false true false 知道如何实现这一目标吗 这是一个狡猾的评估器类
  • Elasticsearch - IndicesClient.put_settings 不起作用

    我正在尝试更新我原来的索引设置 我的初始设置如下所示 client create index movies body settings number of shards 1 number of replicas 0 analysis fil
  • iPhone“书签到主屏幕”会删除 cookie 和会话吗?

    现在我正在开发一个基于网络的应用程序 用户必须首先登录 当我通过 iPhone Safari 打开页面 登录并重新启动 Safari 时 我仍然处于登录状态 Cookie 和会话 ID 仍然设置 但是 当我使用 添加到主屏幕 添加此页面时
  • spring Net 与企业库

    我一直在网上搜索有关网络框架的信息 从现在起我可以在我的项目中使用它来 保留它 我几乎已经做出了决定 但我想要一些关于该方向的参考信息市场正在继续发展 我在谷歌中找不到任何关于哪个是最常用的 哪个最有未来等等的信息 我也一直在阅读其他框架
  • CoreAnimation CALayer 和 CATextLayer 组合

    I am just playing around with CA lately Now I am kind of stuck This is the thing I want to animate 就目前而言 我已经让圆形动画正常工作了 我
  • gradle.buildStarted 未触发

    我无法在我的 gradle 构建中触发 buildStarted 不确定我做错了什么 我有一个像这样的根项目 gradle 文件 版本 1 0 buildscript repositories maven url http repo jfr
  • 如何在极坐标中的多个条件下使用“when”、“then”和“otherwise”?

    我有一个包含三列的数据集 将检查 A 列中的字符串 如果字符串匹配foo or spam 同一行中其他两列的值L and G应该改为XX 为此我尝试了以下方法 df pl DataFrame A foo ham spam egg L A54