在 Pandas Lambda 函数中使用带有多个 if 语句的 Apply

2024-04-21

我试图根据数据框中人的大小来推断分类,如下所示:

      Size
1     80000
2     8000000
3     8000000000
...

我希望它看起来像这样:

      Size        Classification
1     80000       <1m
2     8000000     1-10m
3     8000000000  >1bi
...

我知道理想的过程是应用这样的 lambda 函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else "1-10m" if 1000000<x<10000000 else ...)

我检查了一些关于 lambda 函数中的多个 if 的帖子,这是一个示例链接 https://stackoverflow.com/questions/33439434/multiple-if-statements-in-a-lambda-function,但是由于某种原因,该合成器在多个 ifs 语句中对我不起作用,但它在单个 if 条件下工作。

所以我尝试了这个“非常优雅”的解决方案:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "1-10m" if 1000000 < x < 10000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "10-50m" if 10000000 < x < 50000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "50-100m" if 50000000 < x < 100000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "100-500m" if 100000000 < x < 500000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "500m-1bi" if 500000000 < x < 1000000000 else pass)
df['Classification']=df['Size'].apply(lambda x: ">1bi" if 1000000000 < x else pass)

发现“pass”似乎也不适用于 lambda 函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)
SyntaxError: invalid syntax

关于 Pandas 中 apply 方法中 lambda 函数内的多个 if 语句的正确语法有什么建议吗?多线或单线解决方案都适合我。


这是一个您可以借鉴的小示例:

基本上,lambda x: x..是函数的短一行。 apply 真正需要的是一个你可以轻松地自己重新创建的函数。

import pandas as pd

# Recreate the dataframe
data = dict(Size=[80000,8000000,800000000])
df = pd.DataFrame(data)

# Create a function that returns desired values
# You only need to check upper bound as the next elif-statement will catch the value
def func(x):
    if x < 1e6:
        return "<1m"
    elif x < 1e7:
        return "1-10m"
    elif x < 5e7:
        return "10-50m"
    else:
        return 'N/A'
    # Add elif statements....

df['Classification'] = df['Size'].apply(func)

print(df)

Returns:

        Size Classification
0      80000            <1m
1    8000000          1-10m
2  800000000            N/A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pandas Lambda 函数中使用带有多个 if 语句的 Apply 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 避免在 AWS Lambda 上使用 netcore2.0 和 Serilog 进行两次日志记录

    将我的 netcore 项目升级到 2 0 后 当我的应用程序在使用 Serilog 框架的 AWS Lambda 上运行时 我会看到双日志 请参阅下面我的设置 public void ConfigureServices IServiceC
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f

随机推荐

  • 如何处理同时碰撞以使处理顺序无关紧要?

    假设有3个球同时碰撞 我发现解决冲突的顺序会对最终结果产生影响 这当然没有意义 为了解释和简单起见 考虑 1D 中的 3 个球 质量相同 弹性碰撞 顶部的数字是速度 箭头是方向 假设它们当前都互相接触 即发生碰撞 gt 2 gt 1 lt
  • Pydev 中的 Django 会产生多个进程?

    我在 Eclipse 中的 PyDev 中设置了我的项目 每当我调试我的项目时 一切都很顺利 但是一旦我尝试重新启动 Django 服务器 它就会生成一个额外的 runserver 进程 阻塞我用于服务器的端口 8000 有没有解决方法可以
  • Nginx 位置“不等于”正则表达式

    我该如何设置locationNginx 中的条件是否响应任何不等于列出的位置 I tried location dir1 file2 php rewrite http example com 1 permanent 但它不会触发重定向 它只
  • Rails:如何为 ruby​​ 模块编写测试?

    我想知道如何为混合到几个类中的模块编写单元测试 但不太知道如何去做 我是否通过在包含它们的类的测试文件之一中编写测试来测试实例方法 似乎不正确 或者您可以以某种方式将所包含方法的测试保留在特定于模块的单独文件中吗 同样的问题也适用于类方法
  • VBO - 没有指数化的指数化

    我正在尝试将 VBO 与元素数组缓冲区一起用于我的三角形 如下所示 glBindBuffer GL ARRAY BUFFER g Buffer 0 glVertexPointer 3 GL FLOAT 0 BUFFER OFFSET 0 g
  • 如何使用 python-decorator 包来装饰类方法?

    我有一个装饰器 我想用它来装饰类方法 在下面的示例中 mydec 装饰器本身可以正常工作 但是在使用 help 或 pydoc 时它不会保留函数签名 为了解决这个问题 我研究了使用 decorator python decorator 包
  • GZipStream:为什么我们在压缩后转换为base 64?

    我只是在查看用于压缩字符串的代码示例 我发现使用 GZipStream 类就足够了 但我不明白为什么我们必须将其转换为 Base 64 字符串 如示例所示 using System IO Compression using System T
  • 无法在 Java 中使用 List 类进行向下转换 [重复]

    这个问题在这里已经有答案了 我一直在寻找这个问题的答案 但没有成功 我的问题是为什么不能使用泛型进行向下转型 我有一个名为 Job 的类 并扩展了一个名为 Model 的类 Job extends Model 现在 我从生成模型列表的可重用
  • 手动生成 .appxsym 和 .appxupload 用于 Windows 应用商店应用程序崩溃分析是否安全?

    我们有一个带有手动打包过程的应用程序 MakeAppx exe 我们希望将此应用程序发布到商店 包括公共符号文件 以便我可以下载 cab 进程转储文件进行崩溃分析 如这里描述的 http msdn microsoft com en us l
  • Bower:安装 2 个版本的 jQuery

    我将如何安装 2 个版本的 jQuery使用凉亭 我想要 v2 0 以及 1 9 1 来支持浏览器回退 我遇到的问题是如果你跑bower install jquery 1 9 1 jquery 2 0 0第一个版本被第二个版本覆盖 因为它们
  • 在 UIImage imageNamed 中使用外部图像

    我正在从网上下载两张图片 Apple png 和 电子邮件受保护 cdn cgi l email protection 我想用 UIImage imageNamed Apple png 因此它可以使用内置功能来检测是否应该显示 Apple
  • 使用 oAuth 或其他方式实施访问

    我正在尝试想办法向其他第三方网站开放网站及其部分数据库 类似于 Twitter 让网络应用程序连接到其数据库以检索数据并可能存储数据的方式 我最初的研究让我想到了 oAuth 或者是 openID 我需要做的是让第三方网站登录网站上的用户帐
  • 在 MATLAB 中将数组拆分为多个部分

    我想将数组分成相等的部分 如下所示 a 1 2 3 4 5 6 7 8 9 10 n 2 b split a n b 1 2 3 4 5 6 7 8 9 10 哪个函数可以做到这一点 尝试这个 a 1 2 3 4 5 6 reshape a
  • 想要为 Android Activity 提供半透明背景?

    我希望某个活动有一个半透明的背景 以便可以在该活动下方看到之前的活动 类似于在后台播放的视频上方弹出的半透明菜单 这可能吗 你能告诉我怎么做吗 注意 我无法使用 Android 的默认半透明主题 因为我正在为我的应用程序使用我自己的自定义背
  • 指向数组元素

    我想要实现的目标是说我有一个数组 我希望能够通过指向它来修改整个代码中的特定数组元素 例如在 C 中我可以这样做 int main int arr 5 1 2 3 4 5 int c arr 3 cout lt lt arr 3 lt
  • Xcode 12 和 OSLog (os.log):包装 OSLogMessage 导致编译错误:参数必须是字符串插值

    在 Xcode 12 iOS 14 中 OSLog 获得了对字符串插值的支持 耶 但仍然无法附加挂钩以轻松登录到其他渠道 例如 Crashlytics 所以我想我只需制作一个简单的包装器并传递参数即可 然而 关于字符串插值似乎发生了一些神奇
  • “无法开始调试”-VS2010 ASP.NET MVC 2

    我只能使用 VS2010 和 ASP NET MVC2 启动一次调试会话 当我结束第一个会话并尝试启动另一个会话时 我可以看到 无法开始调试 没有其他消息 我使用 Visual Studio Development Server 而不是 I
  • 删除单链表中的节点

    如何删除只有一个指针指向要删除节点的单链表中的节点 起始和结束指针未知 可用信息是指向应删除节点的指针 您可以在不获取前一个节点的情况下删除节点 方法是让它模仿以下节点并删除该节点 void delete Node n if is sent
  • SMLoginItemSetEnabled - 从应用程序沙盒登录开始 - Xcode 6.3(插图)

    当应用程序沙箱化时 如何使应用程序具有登录时启动功能 感谢 CORY BOHON 他创建了以下教程 http martiancraft com blog 2015 01 login items http martiancraft com b
  • 在 Pandas Lambda 函数中使用带有多个 if 语句的 Apply

    我试图根据数据框中人的大小来推断分类 如下所示 Size 1 80000 2 8000000 3 8000000000 我希望它看起来像这样 Size Classification 1 80000 lt 1m 2 8000000 1 10m