arrays - 具有创建新数据框功能的多维数组
问题描述
与此问题类似,我想快速使用 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 行。
任何帮助将不胜感激,因为我是熊猫的新手。
解决方案
推荐阅读
- sql - SQL如何从一个列表中连接相同的值然后求和
- unity3d - 如何在 Unity 中通过脚本更改文本
- android - 在小屏幕上看不到按钮之间的空间
- javascript - Detox 无法在 React Native Android 上的发布版本上运行
- android - 添加按钮时,我的 Xamarin 应用程序崩溃
- visual-studio - Xamarin 开发 - Resource.Id 问题,Resource.Id 不包含项目
- c# - 为什么 C# 关键字无法识别?
- javascript - 仅使用 React Hooks;单击按钮 1 秒后增加和减少计数异步
- java - 从图像副本数据库中提取 s3 路径
- sap-cloud-sdk - Cloud SDK 版本从 3.36.0 升级到 3.42.0 失败