Pandas新增BEST列存储与前2行差值最大的列名列表实现方案
Pandas DataFrame新增BEST列实现方案
核心实现逻辑
- 先用
diff(periods=2)计算每列当前行与前2行的差值 - 逐行判断:如果该行差值全为空(前两行没有足够的历史数据),返回空列表;否则筛选出所有差值等于该行最大值的列名,返回列表
完整代码
import io, pandas as pd # 生成测试DataFrame df = io.StringIO(""" A|B|C 1|2|3 3|2|1 5|2|4 -3|0|2 6|3|4 """) df = pd.read_csv(df, sep='|') # 计算每列与前2行的差值 diff_df = df.diff(periods=2) # 定义获取最优列名的函数 def get_best_cols(row): if row.isna().all(): return [] max_diff = row.max() return row.index[row == max_diff].tolist() # 新增BEST列 df['BEST'] = diff_df.apply(get_best_cols, axis=1) # 打印结果 print(df)
输出结果验证
运行代码后输出和预期完全一致:
A B C BEST 0 1 2 3 [] 1 3 2 1 [] 2 5 2 4 ['A'] 3 -3 0 2 ['C'] 4 6 3 4 ['A', 'B']
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

