如何将DataFrame列中每个值代入公式并生成结果列?
为DataFrame每列按指定公式计算结果列
需求说明
给定如下结构的DataFrame:
| Column 1 | Column 2 | Column 3 |
|---|---|---|
| -0.01784 | 90.12232 | 0.12323 |
| 36.50000 | 1.32003 | 30.10937 |
| -187.03982 | -1.09322 | -3.20091 |
需为每列的每个数值x计算y值,公式为:y = ((maximum - minimum)**2) + ((x - 10)**2)
其中maximum是对应列的最大值,minimum是对应列的最小值。
实现代码
使用Pandas可高效完成该计算,代码如下:
import pandas as pd # 构造示例DataFrame data = { 'Column 1': [-0.01784, 36.50000, -187.03982], 'Column 2': [90.12232, 1.32003, -1.09322], 'Column 3': [0.12323, 30.10937, -3.20091] } df = pd.DataFrame(data) # 定义计算函数,接收列数据并返回计算结果 def compute_y(col): col_max = col.max() col_min = col.min() return (col_max - col_min)**2 + (col - 10)**2 # 应用函数到每一列,保留5位小数匹配预期精度 result_df = df.apply(compute_y).round(5)
运行结果
执行代码后,result_df的输出与预期完全一致:
| Column 1 | Column 2 | Column 3 |
|---|---|---|
| 50070.40824 | 14739.86089 | 1207.12533 |
| 50672.30112 | 8395.61661 | 1513.96151 |
| 88794.74179 | 8443.33426 | 1283.83877 |
说明
df.apply()会遍历DataFrame的每一列,将列数据传入自定义函数compute_y- 函数内先获取当前列的最大值和最小值,再严格按照公式计算每个
x对应的y - 使用
round(5)统一保留5位小数,确保结果精度与预期匹配
内容的提问来源于stack exchange,提问作者Anna Shevtsova
相关产品推荐
相关产品推荐

