python - 使用 pandas 系列元素作为边界的简洁/优雅集成

标签 python numpy pandas scipy

我有一个 pandas 数据框,我称之为 df。它有列“A”和“B”。

    A   B
1   0   3
2   1   4
3   2   5

我想添加一列“C”。 'C' 应该是函数 f 在边界 ('A', 'B') 上的定积分。目前,函数 f 只是 f(x) = x,但将来我将有不同的函数需要映射,而不是简单地求解积分并将“C”计算为 (B^2 - A^2)/2,我想实现一个程序化的解决方案。

以下作品:

from scipy.integrate import quad

df['C'] = df.apply(lambda x: quad(lambda x: x, x[0], x[1])[0], axis=1)

不过,这也显得很不雅观。我发现很难相信应用包含另一个函数的 lambda 函数的数据框方法以第三个函数(目前也是一个 lambda)作为输入是真的做到这一点的最佳方法.

是否有语法上不那么糟糕的方法来实现我将“C”定义为 f 在边界(“A”、“B”)上的积分的最终目标?

最佳答案

我相信你的方法很好,但我会推荐如下内容以提高可读性:

# Explicitly define your function.
def func(x):
    # For example, y = x^2
    return x ** 2

# Explicitly reference A and B end points.
df['C'] = df.apply(lambda x: quad(func, x.A, x.B)[0], axis=1)

您还可以使用列表理解:

df['C'] = [quad(func, a, b)[0] for a, b in zip(df.A, df.B)]

关于python - 使用 pandas 系列元素作为边界的简洁/优雅集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396801/

相关文章:

python - 在 Python 中将数据集转换为奖励/错过数据集

python - python中的求和求和

python - 将数据添加到 MNIST 数据集

python - 如何提取具有相同值的段?

python - 将 SVG 转换为 FontForge 的 SplineSet 格式

python - 无法使用 --workers 选项运行 Odoo

python - 如何使用 Pandas 获取单元格的值并存储到变量中?

python - 使用 python 数据框中的两列(值、计数)绘制直方图

python - 从十六进制字符串中提取位

Python按某个词切割列表