Pandas处理多不同列名DataFrame 大于阈值x的数值减x实现问题
Pandas多DataFrame数值阈值处理方案
核心逻辑:无需匹配各DataFrame的列名,仅针对数值类型列做条件运算,非数值列自动保留原始内容,适配列名不固定的场景。
实现代码
1. 定义阈值和单表处理函数
import pandas as pd # 设定阈值 x = 10000000000000 def process_single_df(df, threshold): # 自动筛选所有数值类型列,排除字符串、日期等非数值列 numeric_cols = df.select_dtypes(include='number').columns # 数值列满足>阈值则减阈值,否则保留原值 df[numeric_cols] = df[numeric_cols].where(df[numeric_cols] <= threshold, df[numeric_cols] - threshold) return df
2. 批量处理20个DataFrame
将所有待处理的DataFrame存入列表后批量调用处理函数即可:
# 示例:将20个DataFrame放入列表,可根据实际读入逻辑调整 df_list = [df1, df2, df3, ..., df20] # 批量处理 processed_df_list = [process_single_df(df, x) for df in df_list]
效果验证
以给出的示例数据为例,处理后结果符合预期:
- 第一个df中大于阈值的ID列数值会自动减去阈值,Name、DOB列保持不变
- 第二个df中大于阈值的Office列数值会自动减去阈值,Group、OrderNum列保持不变
所有小于阈值的数值、非数值列均不会被修改。
内容的提问来源于stack exchange,提问作者Messak
相关产品推荐
相关产品推荐

