如何对两个DataFrame复用标准化处理代码?避免重复编写
处理多个DataFrame的复用方案
你可以把标准化步骤封装成一个可复用的函数,再通过循环批量处理这两个DataFrame,具体实现如下:
步骤1:封装处理函数
把重复的标准化逻辑写成一个函数,接收DataFrame作为参数,返回处理后的结果:
import pandas as pd import numpy as np def process_df(df): # 执行标准化步骤 df = df.fillna(method='ffill') df = df.fillna('0') df = df.T df.index.name = 'Sector' df = df.round(0).astype(int) df = df.sort_index(axis=1) df.columns = pd.to_datetime(df.columns) # 若后续无需使用list_month变量,可直接删除该行 list_month = np.array(pd.DatetimeIndex(df.columns).month) df.columns = pd.Series(df.columns).apply(lambda x: x.strftime('%b %Y')).tolist() return df
步骤2:批量处理DataFrame
方式一:列表循环(适合少量DataFrame)
把两个DataFrame放入列表,遍历处理后重新赋值:
# 待处理DataFrame存入列表 dfs = [Df1, Df2] # 批量应用处理函数 processed_dfs = [process_df(df) for df in dfs] # 重新赋值给原变量 Df1, Df2 = processed_dfs
方式二:字典管理(适合后续扩展更多DataFrame)
如果之后需要处理更多同结构的DataFrame,用字典管理更清晰:
# 用字典存储待处理的DataFrame df_dict = {'df1': Df1, 'df2': Df2} # 遍历字典完成批量处理 for name, df in df_dict.items(): df_dict[name] = process_df(df) # 提取处理后的结果 Df1 = df_dict['df1'] Df2 = df_dict['df2']
这样既避免了重复代码,后续维护或扩展处理对象也更便捷。
内容的提问来源于stack exchange,提问作者Saanchi
相关产品推荐
相关产品推荐

