如何使用pandas对多个DataFrame批量执行相同操作
批量处理pandas DataFrame方案
首先建议将所有待处理的DataFrame存入统一列表,后续只需修改一处逻辑即可同步作用于所有对象,无需为单个变量重复写代码。
完整实现步骤
- 引入依赖并转换示例数据为DataFrame格式
import pandas as pd # 示例数据转DataFrame,你的18个DataFrame可沿用原有生成逻辑 a = pd.DataFrame([[1,3], [2,1], [3,4]], columns=['col1', 'col2']) b = pd.DataFrame([[1,6], [2,9], [3,2]], columns=['col1', 'col2']) c = pd.DataFrame([[1,5], [2,8], [3,9]], columns=['col1', 'col2'])
- 将所有待处理DataFrame存入列表
# 18个DataFrame全部添加到该列表即可 dfs = [a, b, c]
- 批量新增第三列
写法1:可读性最高的循环写法(推荐)
for df in dfs: # 若第二列有固定列名,可写为 df['col3'] = df['你的第二列列名'] * 4 df['col3'] = df.iloc[:, 1] * 4
DataFrame属于可变对象,上述操作会直接修改原变量a/b/c的内容,无需额外重新赋值。
写法2:单行实现
如果需要单行完成批量操作,可使用列表推导式:
# 写法1:直接修改原对象 [setattr(df, 'col3', df.iloc[:,1]*4) for df in dfs] # 写法2:生成新的DataFrame列表,不修改原变量 new_dfs = [df.assign(col3=df.iloc[:,1]*4) for df in dfs]
效果验证
操作完成后直接输出原变量即可看到新增列:
print(a)
输出结果:
col1 col2 col3 0 1 3 12 1 2 1 4 2 3 4 16
内容的提问来源于stack exchange,提问作者Jazim Sohail
相关产品推荐
相关产品推荐

