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

如何将三个重复的Pandas DataFrame循环处理逻辑合并为一个?

简化循环逻辑的解决方案

我们可以把重复的处理逻辑封装成一个函数,然后通过遍历包含数据框列表和对应前缀的元组列表,一次性完成所有处理,让代码更简洁高效。

步骤说明:

  1. 封装重复逻辑:创建一个函数,接收数据框列表和输出文件前缀,内部完成样式应用和导出操作。
  2. 批量处理:将所有需要处理的数据框列表和对应前缀整理成元组,遍历这个元组列表调用函数即可。

简化后的完整代码:

import pandas as pd
import dataframe_image as dfi

df = pd.DataFrame(data=[[-100,500,400,0,222,222], [9000,124,0,-147,54,-56],[77,0,110,211,0,222], [111,11,-600,33,0,22],[213,-124,0,-147,54,-56]])
df2 = pd.DataFrame(data=[[100,500,200,0,555,222], [5000,124,0,-147,54,50],[77,0,500,211,0,222], [-900,11,-600,33,0,22],[500,-124,0,-147,54,-56]])

df.columns = pd.MultiIndex.from_product([['x','y','z'], list('ab')])
df2.columns = pd.MultiIndex.from_product([['x','y','z'], list('ab')])

df_list1=[df]
df_list2=[df2]
df_list3=[df,df2]

def colors(i):
    if i < 0:
        return 'background: red'
    elif i > 0:
        return 'background: green'
    else:
        return 'background: yellow'

# 封装处理逻辑的函数
def process_dataframes(df_list, file_prefix):
    for idx, dataframe in enumerate(df_list):
        styler = dataframe.style.applymap(colors, subset=pd.IndexSlice[:, pd.IndexSlice[:, 'a']])
        dfi.export(styler, f'{file_prefix}_{idx}.png')

# 批量处理所有数据框列表
processing_tasks = [
    (df_list1, 'test1'),
    (df_list2, 'test2'),
    (df_list3, 'test3')
]

for df_list, prefix in processing_tasks:
    process_dataframes(df_list, prefix)

额外优化:

  • 简化了colors函数的分支逻辑,去掉冗余的else分支(数值只有正负零三种情况)。
  • 函数命名更具语义化,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:30:41