gpt4 book ai didi

python - 使用 DataFrame 中的值从 pandas Dataframe 中的函数构建新列

转载 作者:行者123 更新时间:2023-11-28 22:30:45 25 4
gpt4 key购买 nike

我是 pandas DataFrame 的新手,我遇到了一些困难,因为我不知道如何访问特定的单元格来进行计算以填充新的单元格。

我想使用 apply 来调用来自第 1 行单元格数据的外部函数。

我做到了,但是将所有内容都输出到一个简单的数组中,但我很确定有更好的方法来做到这一点:

我从具有以下索引的 csv 构建我的 dataFrame:

DateIndex = pd.date_range(start="2005-1-1", end="2017-1-1", freq=BDay())

根据以下摘录,我确信我的数据框没问题:

2005-01-03    0.005742
2005-01-04 0.003765
2005-01-05 -0.005536
2005-01-06 0.001500
2005-01-07 0.007471
2005-01-10 0.002108
2005-01-11 -0.003195
2005-01-12 -0.003076
2005-01-13 0.005416
2005-01-14 0.003090

所以,我想在第一个条目上加 100,而对于其他条目,加一个,然后将其乘以前一个条目。

我能够在数组中这样做:

for i in range(0,len(df.index)):
if i == 0:
listV = [df.iloc[i] + 100]
else:
listV.append(listV[i-1] * (1 + df.iloc[i]))

有没有办法做到这一点并将结果直接放入数据框的新列中?

非常感谢,问候,朱利安

最佳答案

初始化

df = pd.DataFrame(dict(
col=[ 0.005742, 0.003765, -0.005536, 0.0015 , 0.007471,
0.002108, -0.003195, -0.003076, 0.005416, 0.00309 ]
), pd.to_datetime([
'2005-01-03', '2005-01-04', '2005-01-05', '2005-01-06', '2005-01-07',
'2005-01-10', '2005-01-11', '2005-01-12', '2005-01-13', '2005-01-14'])
)

print(df)

col
2005-01-03 0.005742
2005-01-04 0.003765
2005-01-05 -0.005536
2005-01-06 0.001500
2005-01-07 0.007471
2005-01-10 0.002108
2005-01-11 -0.003195
2005-01-12 -0.003076
2005-01-13 0.005416
2005-01-14 0.003090

评论
这看起来是一系列的返回。通过将 100 添加到第一个观察值,您正在边缘化第一个返回,使其成为 .57 基点 而不是 .57 百分比

我相信您要做的是对所有内容加一,然后乘积,然后乘以 100。

这将显示 100 的累积增长,这就是我相信您所追求的。

df.add(1).cumprod().mul(100)

col
2005-01-03 100.574200
2005-01-04 100.952862
2005-01-05 100.393987
2005-01-06 100.544578
2005-01-07 101.295746
2005-01-10 101.509278
2005-01-11 101.184956
2005-01-12 100.873711
2005-01-13 101.420043
2005-01-14 101.733431

df.add(1).cumprod().mul(100).plot()

enter image description here

关于python - 使用 DataFrame 中的值从 pandas Dataframe 中的函数构建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com