You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量删除DataFrame行?移除存在体重低于70的用户所有记录

过滤DataFrame:移除曾体重低于70的用户全部数据

需求:检查每个用户的体重记录,只要该用户有任意一次weight低于70,就删除该用户的所有行。最终仅保留所有体重记录均≥70的用户数据。

数据重建代码

import pandas as pd
from pandas import Timestamp

data = {'date': {0: Timestamp('2014-01-01 00:00:00'), 
                 1: Timestamp('2014-01-02 00:00:00'), 
                 2: Timestamp('2014-01-03 00:00:00'), 
                 3: Timestamp('2014-01-04 00:00:00'), 
                 4: Timestamp('2014-01-05 00:00:00'), 
                 5: Timestamp('2014-01-06 00:00:00'), 
                 6: Timestamp('2014-01-07 00:00:00'), 
                 7: Timestamp('2014-01-08 00:00:00')}, 
        'name': {0: 'Thomas', 1: 'Thomas', 2: 'Thomas', 3: 'Max', 
                 4: 'Max', 5: 'Paul', 6: 'Paul', 7: 'Paul'}, 
        'size': {0: 130, 1: 132, 2: 132, 3: 143, 4: 150, 5: 140, 
                 6: 140, 7: 141}, 
        'weight': {0: 60, 1: 65, 2: 80, 3: 75, 4: 56, 5: 75, 6: 76, 7: 74}}

df = pd.DataFrame(data)

解决方案

利用groupby+transform实现批量筛选:

# 生成掩码:标记所有体重从未低于70的用户对应的行
mask = df.groupby('name')['weight'].transform(lambda x: (x >= 70).all())
# 过滤得到结果
result_df = df[mask]

处理结果

运行上述代码后,result_df仅保留Paul的所有记录:

date   name  size  weight
5 2014-01-06   Paul   140      75
6 2014-01-07   Paul   140      76
7 2014-01-08   Paul   141      74

内容的提问来源于stack exchange,提问作者newcomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:50:17