首页 > 解决方案 > 具有创建新数据框功能的多维数组

问题描述

与此问题类似,我想快速使用 jit 将 exponetial_sum 函数应用于至少 10 列(以下示例简化为 3 列)。

import pandas as pd
import numpy as np
from numba import jit

#create dataframe
df = pd.DataFrame({'time': [1, 2.1, 2.13, 3.7, 10, 10.2], 
           'A': [1, 3, -1, 7, 2, 1],
           'B': [0, 3, 5, 7, 20, 4],
           'C': [1, 0, 0, 0, 2, 0]})

# create decay constant
decay_constant = .05 * df.time
df['weight'] = np.exp(-df.time.diff() * decay_constant)
df.weight.iat[0] = 1



#exponential sum function

@jit(nopython=True)
def exponential_sum(A, k):
    total = A[0]
    yield total
    for i in range(1, len(A)): 
        total = total * k[i] + A[i]
        yield total

这是我挣扎的地方。我运行以下

df['expSum'] = list(exponential_sum(df[['A','B','C']].values, df.weight.values))

这给了我一个无意义的 expSum 列中的值列表,这些值不是函数计算的每列的指数和。最后,我想分解 expSum 列并重命名列 A、B、C... 这将是指数和值的新数据框。

我的真实数据框有 3000 多列和 3000 行。

任何帮助将不胜感激,因为我是熊猫的新手。

标签: arrayspandasdataframenumpy

解决方案


推荐阅读