当前位置: 首页 > 知识库问答 >
问题:

在每一组的条件为真后,熊猫会保持成排

程和畅
2023-03-14

我目前遇到了以下问题,我希望在满足条件之前删除pandas数据帧中的行。我想删除“Number”列中满足10或更大条件之前的每一行,具体取决于Name列。假设dataframe(df)有两列名为“Name”和“Number”。我希望在满足条件之前删除每个唯一名称的所有行,并在满足条件之后保留所有行。

Name  Number
Matt    4
Matt    5
Matt    13
Matt    4
Sophie  5 
Sophie  14
Sophie  18
Steve   5
Steve   4
Steve   21 

Desired output: 
Name   Number
Matt    13
Matt    4
Sophie  14
Sophie  18
Steve   21

下面的代码在满足条件后删除所有项,但这将应用于整个系列/列的值。我想对每个唯一的名称分别这样做。有什么方法可以做到这一点,也许和一个团员?

df[(df['Number'] > 10).argmax():]

非常感谢您的帮助!

注:相关问题。

共有2个答案

雷浩思
2023-03-14

使用GroupBy.cummax,条件是在Series.gt中获得更大的值,如10,并通过布尔索引进行筛选:

df = df[df['Number'].gt(10).groupby(df['Name']).cummax()]
print (df)
     Name  Number
2    Matt      13
3    Matt       4
5  Sophie      14
6  Sophie      18
9   Steve      21

详细信息:Trues在第一次匹配后重复到组末:

print (df['Number'].gt(10).groupby(df['Name']).cummax())
1    False
2     True
3     True
4    False
5     True
6     True
7    False
8    False
9     True
Name: Number, dtype: bool
艾仲渊
2023-03-14

您可以使用GroupbyCummaxCummax将True之后的每个False转换为True,因此如果您Groupby"Name",它会创建一个布尔掩码,其中大于10的值之后的每个值都是选择:

msk = df['Number'].gt(10).groupby(df['Name']).cummax()
out = df[msk]

输出:

     Name  Number
2    Matt      13
3    Matt       4
5  Sophie      14
6  Sophie      18
9   Steve      21
 类似资料:
  • 我收到了一个要求,在新的一个月开始时强制重新授权用户(我们有一个月订阅模式)。为了实现这一点,并且不影响应用程序中使用的其他身份验证提供者,我修改了登录调用,如下所示: 以前: 之后: 请注意,出于测试目的,< code > expire suc 将被设置为1分钟;一旦实施成功,它将被计算到月底。 我期望我们的身份(扩展)在到达后会获得其属性 false,但事实并非如此。正在读取ClaimsIde

  • 我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:

  • 问题内容: 我知道必须在某些地方回答此问题,但我找不到它。 问题 :groupby操作后对每个组进行采样。 问题答案: 应用lambda并使用param调用:

  • 问题内容: 如何将条件逻辑应用于Pandas DataFrame。 请参见下面显示的DataFrame, 我的原始数据显示在“数据”列中,并且期望的输出显示在其旁边。如果“数据”中的数字小于2.5,则所需的输出为False。 我可以应用循环并重新构建DataFrame …但是那是“非Python的” 问题答案: 只需将列与该值进行比较:

  • 问题内容: 我每周有一些设备的日志数据。对于某些设备,它从星期一开始,对于某些设备,它在星期三开始,等等。有时此数据中有〜月的间隔,但是我希望DataFrame索引仍然包含每周具有NaN值的行。 我正在尝试在Python中使用,但是我无法获得期望的结果。 例: 是)我有的: 我期望/想要的(请注意带有NaN的2个新行): 我得到的是: 因此,我获得了每个星期日的所有值和日期。但是我不需要每个星期天

  • 问题内容: 在 pandas groupby上发布了一个新的更通用的问题:每个组中的前3个值并存储在DataFrame中,并且在那里已经找到了可行的解决方案。 在此示例中,我创建了一个数据帧,其中的一些随机数据间隔为5分钟。我想创建一个数据框( df分组 ),其中列出了每小时的 3个最高值 。 即:从这一系列价值 我非常接近解决方案,但我找不到最后一步的正确语法。我到现在为止()的结果是: 我想从