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

Python中循环逐次删除DataFrame指定分组最小值行的实现问题

实现方案

使用字典存储每轮生成的DataFrame是最易维护的实现方式,完整可运行代码如下:

import pandas as pd

# 构造原始测试数据
data = pd.DataFrame({
    'f1': [11,14,20,15,19,29],
    'f2': [34,10,12,19,29,30],
    'f3': ['a','a','a','b','b','b']
})

# 初始化存储结果的字典,key为操作轮次,value为对应DataFrame
df_dict = {}
current_df = data.copy()
round_num = 1

# 循环直到f3列无a类数据
while True:
    a_part = current_df[current_df['f3'] == 'a']
    if len(a_part) == 0:
        break
    # 取a类子集f2列的最小值
    min_f2 = a_part['f2'].min()
    # 删除对应行生成新DataFrame
    new_df = current_df.loc[~(current_df['f2'] == min_f2)].copy()
    # 存入字典
    df_dict[round_num] = new_df
    # 更新轮次和当前处理的DataFrame
    current_df = new_df
    round_num += 1

字典使用方法

  • 提取指定轮次的DataFrame:例如获取第二次操作后的结果,直接调用df_dict[2]即可,和普通DataFrame用法完全一致
  • 提取指定轮次的列:例如取第二次结果的f2列,写法为df_dict[2]['f2']
  • 遍历所有结果示例:
for round_id, df in df_dict.items():
    print(f"第{round_id}次操作结果:")
    print(df)

运行上述代码后,df_dict[2]的结构和你给出的预期第二次删除后的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:06:05