基于Pandas实现按QuantityFormula匹配列头生成Quantity列的方法
解决方案
方法1:使用Pandas内置lookup(高效推荐)
Pandas的lookup方法可以直接根据行索引和列名数组提取对应单元格的值,完美适配需求且性能更优:
# 直接生成Quantity列 Merged['Quantity'] = Merged.lookup(Merged.index, Merged['QuantityFormula'])
- 自动匹配每行
QuantityFormula对应的列名,提取对应数值; - 支持新增行:只要新增行的
QuantityFormula值是数据表中存在的列名,就能自动提取数值; - 未来填充NaN列的数值后,会自动取到最新值。
如果需要处理列名不存在的异常情况,可添加判断:
valid_cols = Merged.columns Merged['Quantity'] = Merged.apply( lambda row: row[row['QuantityFormula']] if row['QuantityFormula'] in valid_cols else None, axis=1 )
方法2:修改现有XLOOKUP函数适配需求
如果要基于你现有的XLOOKUP逻辑调整,可以修改为针对单行列名的查找:
def xlookup_col(row, col_name_col, if_not_found=None): lookup_value = row[col_name_col] if lookup_value in row.index: return row[lookup_value] else: return if_not_found # 应用到每行生成Quantity列 Merged['Quantity'] = Merged.apply(xlookup_col, axis=1, args=('QuantityFormula', None))
- 逐行检查
QuantityFormula的值是否为有效列名,有效则返回对应数值,否则返回None(可自定义返回值); - 同样支持新增行和未来的列值填充。
内容的提问来源于stack exchange,提问作者Jimmy3421
相关产品推荐
相关产品推荐

