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

如何根据阈值删除行,但按另一列组织?
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

复制
相关文章
VBA:根据指定列删除重复行
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要删除第一行数据,保留后一行的数据。
Exploring
2022/09/20
3.4K0
Excel按列排序和按行排序
文章背景:Excel二维表中记录着多行多列的数据,有时需要按行或按列排序,使数据更加清晰、易读。下面分别对按列排序和按行排序进行介绍。
Exploring
2022/08/10
3.4K0
Excel按列排序和按行排序
pandas按行按列遍历Dataframe的几种方式
iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。 itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。 iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。 示例数据
kirin
2021/04/30
7.5K0
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.7K0
【说站】Python DataFrame如何根据列值选择行
Python-Excel-openpyxl-10-按行或者按列遍历
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 openpyxl:2.6.2
zishendianxia
2019/10/23
9.8K0
使用 Python 按行和按列对矩阵进行排序
假设我们采用了一个输入的 MxM 矩阵。我们现在将使用嵌套的 for 循环对给定的输入矩阵进行逐行和按列排序。
很酷的站长
2023/02/22
6.6K0
使用 Python 按行和按列对矩阵进行排序
VBA:基于指定列删除重复行
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要保留最后测试的数据。之前通过拷贝行的方式保留最后一行的数据(参见文末的延伸阅读1),但运行效率较低。目前通过借助数组和字典达到删除重复行的效果。
Exploring
2022/12/18
3.6K0
VBA:基于指定列删除重复行
spark按某几列删除dataframe重复行
想根据 id 和 lable 来删除重复行,即删掉 id=2 且 lable=2 的重复行。利用 distinct 无法删除
机器学习和大数据挖掘
2019/07/02
2.4K0
数据结构 || 二维数组按行存储和按列存储[通俗易懂]
设有数组A[n,m],数组的每个元素长度为3字节,n的值为1~8,m的值为1~10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少。
全栈程序员站长
2022/09/13
5.3K0
Python-科学计算-pandas-14-df按行按列进行转换
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 pandas:0.19.2
zishendianxia
2020/10/10
2.1K0
Python-科学计算-pandas-14-df按行按列进行转换
leetcode-867-Transpose Matrix(矩阵由按行存储变成按列存储)
Given a matrix A, return the transpose of A.
chenjx85
2018/08/01
1.4K0
Jquery如何删除table里面checkbox选中的多个行与多个列
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
4.5K0
VBA删除空白行和空白列代码
这是一个学习的代码,做了解析,做为个人保存,学习之用。 'VBA删除空白列 Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Count '得到所使用区域的总行数 LastRow = LastRow + ActiveSheet.UsedRange.Row - 1 '使用区域的总行数+所使用区域的开始第1行用-1 For r = LastR
哆哆Excel
2022/10/25
3.4K0
pandas读取txt---按行输入按行输出
 1.pandas读取txt---按行输入按行输出 import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 2 李四 99 3 王五 98 ''' test1 = pd.read_table("test1.txt") # 这个是带有标题的文件 names = test1["name"] # 根据标题来取值 print(names) ''' 张三 李四 王五 ''' # test2的内容 ''' 4 All
汀丶人工智能
2022/12/21
1.3K0
shell按列合并文件
cat命令可以按行依次合并两个文件。但有时候我们需要按列合并多个文件,也就是将每一个文件的内容作为单独的的几列,这个时候可以用paste来按列合并多个文件。 用法: paste file1 file2 ...
生信编程日常
2020/06/28
3K0
Excel里的PP可以按列排序,但你知道它的缺陷吗?
在我的文章、书或视频中,均介绍过Excel Power Pivot中的按列排序问题,通过按列排序,可以实现一列数据参照另一列的顺序进行排序,具体可以参考文章《PP-入门前奏:传统透视表无法完成的简单的排序问题》。
大海Power
2021/08/31
1.3K0
ExcelVBA删除指定列含有指定字符的所在的行
2.用SpecialCells(xlCellTypeConstants, 16)快速定位
哆哆Excel
2023/09/09
1.2K0
ExcelVBA删除指定列含有指定字符的所在的行
使用VBA删除工作表多列中的重复行
自Excel 2010发布以来,已经具备删除工作表中重复行的功能,如下图1所示,即功能区“数据”选项卡“数据工具——删除重复值”。
fanjy
2022/11/16
12.2K0
使用VBA删除工作表多列中的重复行
MySQL 如何查找删除重复行?
第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本:
Bug开发工程师
2020/03/12
6.9K0
MySQL 如何查找删除重复行?
MySQL 如何查找删除重复行?
第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本:
芋道源码
2019/10/22
5.8K0

相似问题

根据列的阈值删除行

25

根据阈值删除行

12

熊猫:根据阈值标准删除列

14

根据列中的值和阈值保持值删除行

22

按组阈值选择或删除行

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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