Pandas与字典匹配:库存规范化、对数转换及字典构建优化求助
解决方案:自动构建总库存字典 + 规范化与log10转换优化
一、自动构建总库存字典
无需硬编码,直接从第一个CSV文件提取Total stock行数据生成字典:
import pandas as pd # 读取总库存CSV,将第一列设为索引 df_total = pd.read_csv('total_stock.csv', index_col=0) # 提取Total stock行,清洗列名(转小写、移除后缀)后转字典 fruit_total = df_total.loc['Total stock'].rename( lambda col_name: col_name.lower().replace('.count.out', '') ).to_dict()
执行后fruit_total会自动生成目标字典:{'apple': 1000, 'orange': 500, 'banana': 1000}。
二、简洁实现规范化与log10转换
利用Pandas广播特性和NumPy向量化操作,一行代码完成需求:
import numpy as np # 读取各商店库存CSV,将第一列设为索引 df_stores = pd.read_csv('store_stocks.csv', index_col=0) # 1. 按列匹配总库存做除法规范化;2. 对结果执行log10转换 normalized_log_result = np.log10(df_stores.div(fruit_total, axis=1))
关键说明:
df_stores.div(fruit_total, axis=1):指定axis=1让Pandas按列名匹配字典键,自动完成列对应值的除法,无需手动循环。np.log10():直接对整个DataFrame执行向量化运算,效率远高于逐元素处理。- 若担心库存为0导致log报错,可添加微小偏移避免异常:
np.log10(df_stores.div(fruit_total, axis=1) + 1e-6)
内容的提问来源于stack exchange,提问作者newstudenttoprogramming
相关产品推荐
相关产品推荐

