如何从pandas读取的Excel字符串中调用变量计算数值?
处理Excel数据并计算B列值的高效方案
1. 读取原始数据
先读取目标Excel表格(以下用示例数据模拟实际读取结果):
import pandas as pd # 实际场景替换为 pd.read_excel("你的文件路径.xlsx") original_df = pd.DataFrame({ "ID": ["01", "02"], "A": [5, 8], "B": ["A+2", "A+4"] })
2. 生成10条随机选取ID01/ID02的DataFrame
通过重复采样生成目标数据集:
# replace=True 允许重复选取同一行数据 random_df = original_df.sample(n=10, replace=True).reset_index(drop=True)
3. 高效计算B列实际数值
由于B列格式固定为A+x,直接提取数字部分与对应行的A值相加即可,无需复杂函数:
# 提取B列中的整数部分,转换为数值类型 random_df["x"] = random_df["B"].str.extract(r"\+(\d+)").astype(int) # 计算B列的实际结果 random_df["B_calculated"] = random_df["A"] + random_df["x"] # 按需删除临时生成的x列 random_df = random_df.drop("x", axis=1)
最终效果示例
处理后的random_df输出样例:
| ID | A | B | B_calculated | |
|---|---|---|---|---|
| 0 | 01 | 5 | A+2 | 7 |
| 1 | 02 | 8 | A+4 | 12 |
| 2 | 01 | 5 | A+2 | 7 |
| ... | ... | ... | ... | ... |
方案优势
- 规避
eval()的安全风险,也无需依赖locals()动态取值 - 采用pandas矢量化操作,处理海量数据时比逐行调用函数效率高得多
- 代码简洁,无需针对运算逻辑写额外判断(只要B列格式固定为
A+x即可适配)
内容的提问来源于stack exchange,提问作者Luc Borel
相关产品推荐
相关产品推荐

