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
相关产品推荐
相关产品推荐

