Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据阈值删除行,但按另一列组织?

如何根据阈值删除行,但按另一列组织?
EN

Stack Overflow用户
提问于 2021-10-27 07:54:58
回答 2查看 42关注 0票数 0

我试图根据每一类行是否包含超过阈值的值来删除与另一行中的值相对应的每一行。虽然我觉得这应该是一个简单的" if“条件语句,但我很困惑这是真的像我想象的那么简单,还是复杂得多。我用的是蟒蛇和熊猫。为了更好地解决这个问题,我将在下面的示例中进行演示。

我有以下数据帧:

代码语言:javascript
运行
AI代码解释
复制
Date              Category      Value
---------------------------------------
2015-06-02               1          2
2015-06-03               1          9
2015-06-04               1          2
2015-06-05               2          2
2015-06-06               2          8
2015-06-07               2         11
2015-06-08               2          2
2015-06-09               4          2
2015-06-10               4          5
2015-06-11               4         12
2015-06-12               4          2
2015-06-13               6          2
2015-06-14               6          8 
2015-06-15               6          2 
2015-06-16               8          2
2015-06-17               8          6
2015-06-18               8         10
2015-06-19               8          2 

如您所见,行通过与"Category“列相对应的特定ID进行分类。所以在这个例子中有5个“类别”:"1","2","4","6","8“。只要类别保持不同,每个类别不增加1也无关紧要。因此,你会看到一个模式,假设这是日期顺序数据,对于每个类别,值从2开始,有一些介于之间的值,不管有多少,到2结束。所以每个类别都有值2。我想要做的是,对于唯一的类别,删除介于2之间的类别,其中没有>= 10的值。正如你所看到的,这将意味着删除类别1(在2之间有一个9),并删除类别6(在2之间有一个8)。当然,在2之间可以有任意数量的值,但其中至少必须有一个是>= 10,因此我希望生成以下数据帧:

代码语言:javascript
运行
AI代码解释
复制
Date              Category      Value
---------------------------------------
2015-06-05               2          2
2015-06-06               2          8
2015-06-07               2         11
2015-06-08               2          2
2015-06-09               4          2
2015-06-10               4          5
2015-06-11               4         12
2015-06-12               4          2
2015-06-16               8          2
2015-06-17               8          6
2015-06-18               8         10
2015-06-19               8          2 

在python中如何做到这一点呢?虽然我认为我会写一个条件语句,说“如果df‘value中的值’< 10,那么删除”,但我不确定如何根据我提到的"Category“列来组织它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-27 08:01:23

因为组以2/3开头/结尾,所以条件df['Value'].ge(10)已经搜索到了中间的那些行。在这种情况下,您只需要执行groupby().transform('any')

代码语言:javascript
运行
AI代码解释
复制
mask = df['Value'].ge(10).groupby(df['Category']).transform('any')

df[mask]

输出:

代码语言:javascript
运行
AI代码解释
复制
          Date  Category  Value
3   2015-06-05         2      3
4   2015-06-06         2      8
5   2015-06-07         2     11
6   2015-06-08         2      3
7   2015-06-09         4      3
8   2015-06-10         4      5
9   2015-06-11         4     12
10  2015-06-12         4      3
14  2015-06-16         8      3
15  2015-06-17         8      6
16  2015-06-18         8     10
17  2015-06-19         8      3
票数 1
EN

Stack Overflow用户

发布于 2021-10-27 08:22:31

pandas中的groupby可以用作迭代器,返回子集的数据帧,以便可以在每个子数据帧上执行操作。举个例子:

代码语言:javascript
运行
AI代码解释
复制
cats = reduce(lambda x, y: x+y, [[i]*4 for i in range(4)])
vals = [random.randint(0, 20) for _ in range(len(cats))]
df = pd.DataFrame({"category": cats, "values": vals})

此随机数据帧可能如下所示:

然后,您可以迭代并将逻辑专门应用于每个子类别,如下所示:

代码语言:javascript
运行
AI代码解释
复制
res = []
for _, sub_df in df.groupby("category"):
    if sub_df["values"].max() >= 10:
        res.append(sub_df)
if res:
    df = pd.concat(res)

此代码查看每个子集,如果满足条件,则将其附加到列表中。然后将此数据帧列表(如果不为空)连接到一个数据帧中。注意:这里的顺序现在将按分组的变量排序。如果这有问题,那么您只需使用df.sort_index()按原始索引重新排序即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69741837

复制
相关文章
web中缓存的几种方式
应用程序把动态文件生成的html文件缓存到文件服务器,以后用户请求动态文件,直接从文件服务器加载对应的静态缓存的html文件返回给用户,这里面主要节省了动态语言的执行时间和数据库访问时间。但是会增加了缓存框架的加载和缓存查找的时间。
哲洛不闹
2018/09/19
2.5K0
PHP中对象缓存方式的选择
类似于Map的键值类型对象缓存对于提高应用的性能有很大的作用,实现此类缓存的方式也比较多,那么该如何选择对象缓存的方式呢?由于PHP常用的运行方式主要是基于FPM的形式,这篇文章暂不考虑常驻内存形式的缓存。
ianzhi
2023/10/19
2710
GWT 初体验
最近体验了一下 GWT(Google Web Toolkit),其实这个技术老早就有了,写 Java 代码,代码很像 AWT 或者 Swing,但是最后编译成一个 war 包,也就是说,没有啰嗦的 JavaScript、HTML 和模板语言,Java 从前到后通吃,常用的模块都被封装成组件了。虽说写起来代码还挺啰嗦的(写法上面居然不支持链式调用,这确实让我看不懂),而且也没有传统 Web 开发方式来得直观,但也算一种很有意思的开发方式,值得体验一下。网上有足够多的教程,要系统地学习,官方文档是最好的材料,非常详尽。而我的方式,则更具个人风格一点,比较+吐槽,这可不是教程。
四火
2022/07/18
1.1K0
GWT 初体验
缓存的设计方式
当有大量的请求到内部系统时,若每一个请求都需要我们操作数据库,例如查询操作,那么对于那种数据基本不怎么变动的数据来说,每一次都去数据库里面查询,是很消耗我们的性能
阿兵云原生
2023/09/01
1890
缓存的设计方式
eclipse安装gwt插件,浏览器安装gwt插件,eclipse启动gwt自带的工程,并在浏览器上访问,eclipse导入gwt工程「建议收藏」
首先gwt插件,小编这里上传了eclipse和浏览器上的gwt插件:http://download.csdn.net/download/csdnliuxin123524/10255451
全栈程序员站长
2022/08/05
1.2K0
eclipse安装gwt插件,浏览器安装gwt插件,eclipse启动gwt自带的工程,并在浏览器上访问,eclipse导入gwt工程「建议收藏」
防止页面url缓存中 ajax中post 请求的处理方式
一般我们在开发中经常会用到Ajax请求,异步发送请求,然后获取我们想要的数据,在Ajax中使用Get请求数据不会有页面缓存的问题,而使用POST请求可是有时候页面会缓存我们提交的信息,导致我们发送的异步请求不能正确的返回我们想要的数据,那么遇到这种情况,我们应该怎么办呢???
全栈程序员站长
2022/07/19
1.6K0
代码中使用缓存的方式
说到缓存,你可能想到的是:热点数据增加缓存,提升读取性能,降低系统负载,但是数据不一致问题和维护成本会增加,只要使用缓存的收益大于成本就可以使用。
只喝牛奶的杀手
2021/05/11
6250
gwt之mvc4g
Mvc4g是一个简单的框架来实现的GWT应用程序的MVC模式。 主要思想 其主要思想是,以减轻开发人员的工作,以单独的视图从模型。该框架是一个XML文件,将允许开发人员告诉视图发射事件时要执行什么样
cloudskyme
2018/03/20
9280
gwt之mvc4g
Redis中的缓存雪崩、缓存击穿、缓存穿透问题
当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系统可能会崩溃。
孟斯特
2023/10/25
3490
Redis中的缓存雪崩、缓存击穿、缓存穿透问题
Django缓存的6种方式及应用
由于Django构建得是动态网站,每次客户端请求都要严重依赖数据库,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存memcached 、Redis中之前缓存的内容拿到,并返回。
菲宇
2019/06/12
9710
Django缓存的6种方式及应用
lodash源码分析之缓存方式的选择
本文为读 lodash 源码的第八篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
对角另一面
2018/01/22
1.1K0
lodash源码分析之缓存方式的选择
每个人心里都有一团火,路过的人只看到烟。 ——《至爱梵高·星空之谜》 本文为读 lodash 源码的第八篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbook也会同步仓库的更新,gitbook地址:pocket-lodash 前言 在《lodash源码分析之Hash缓存》和《lodash源码分析之List缓存》介绍了 lodash 的两种缓存方式,这两种缓存方式都实现了和 Map 一致的数据管理接口,其中 List 缓存只在不支持 Map 的环境中使用,那何时使用 H
对角另一面
2018/03/30
1.2K0
Dubbo缓存机制及实现方式
在互联网应用中,缓存作为提升系统性能和应对高并发的重要手段之一,被广泛应用于分布式系统中。Dubbo作为一款优秀的分布式服务框架,也提供了缓存机制来改善系统性能。本文将深入探讨Dubbo的缓存机制及其实现方式,帮助读者理解并合理应用Dubbo的缓存功能。
疯狂的KK
2023/07/22
1.2K0
Dubbo缓存机制及实现方式
使用Gradle方式构建Kotlin缓存
Kotlin 1.2.21 允许 Kotlin 项目使用构建缓存,通过 Gradle 的构建缓存功能,可以提升 Kotlin 代码的编译速度,加快开发周期。本文将结合实际例子,介绍利用 Gradle 加速 Kotlin 代码编译的原理、配置示例以及在 IDE 中的使用方法。
xiangzhihong
2022/11/30
6580
查看Firefox中的缓存
Information about the Cache Service Disk cache device Number of entries: 333 Maximum storage size: 458708 KiB Storage in use: 3685 KiB Cache Directory: C:\Documents and Settings\Administrator\Local Settings\Application Data\Mozilla\Firefox\Profiles\8ua42bn
Java架构师必看
2021/03/22
8150
初识mybatis中的缓存
mybati的一级缓存作用域为session,当执行opensession()后,结果和sql会被存入缓存中,如果下次执行的sql(参数 语句)相同就直接从缓存当中拿取,而不再执行sql从数据库查询
许喜朝
2020/08/11
4840
.NET 中缓存的实现
在实际开发中我们经常会用到是缓存。它是的核心思想是记录过程数据重用操作结果。当程序需要执行复杂且消耗资源的操作时,我们一般会将运行的结果保存在缓存中,当下次需要该结果时,将它从缓存中读取出来。 缓存适用于不经常更改的数据,甚至永远不改变的数据。不断变化的数据并不适合缓存,例如飞机飞行的GPS数据就不该被缓存,否则你会得到错误的数据。
喵叔
2021/12/01
8950
清理缓存中的头像
晚上和老同事谈及QQ空间头像修改后,页面上其它地方的图像也立马修改过来了。看了一下,说了我的想法(因为以前这样做过):
meteoric
2018/11/15
2.7K0
缓存的正确使用方式,你都会了吗?
首先,缓存由于其适应高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。
Bug开发工程师
2018/07/23
8110
缓存的正确使用方式,你都会了吗?
点击加载更多

相似问题

如何使用GWT以编程方式禁用html缓存

20

如何清除gwt中的缓存?

23

GWT中的永久缓存映像

23

GWT中的大量图像缓存

24

GWT中静态文件的缓存

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档