【问题标题】:How do I generate a vector from a pandas dataframe?如何从熊猫数据帧生成向量?
【发布时间】:2022-11-24 03:23:20
【问题描述】:

下面是 csv 文件的截图。我想通过使用熊猫生成增长率向量。

1

在我的例子中,增长率定义为log(this year/previous year)

非常感谢!

【问题讨论】:

标签: python pandas dataframe quantitative-finance


【解决方案1】:

欢迎来到 SO。这应该可行,但您应该阅读如何提出好的问题:

import numpy as np
import pandas as pd

np.random.seed(42)
YearCode = np.arange(1970, 1975)
df = pd.DataFrame(np.random.rand(5, 3),  columns = ['VariableCode', 'Region', 'AggValue'])
df['YearCode'] = YearCode
shifted = df['YearCode'].shift(1)
df['logValue'] = df['YearCode']/shifted
df['logValue'] = np.log(df['logValue'])
print(df)
   VariableCode    Region  AggValue  YearCode  logValue
0      0.374540  0.950714  0.731994      1970       NaN
1      0.598658  0.156019  0.155995      1971  0.000507
2      0.058084  0.866176  0.601115      1972  0.000507
3      0.708073  0.020584  0.969910      1973  0.000507
4      0.832443  0.212339  0.181825      1974  0.000507

这个怎么运作:

本质上,您将“YearCode”移动 1,然后将原始列除以移动后的列。

【讨论】:

  • 非常感谢,我有点明白怎么做了。对不起问题格式,我前一天刚刚注册了这个网站,我会编辑它。还有一个问题,抱歉这个模糊的问题,我的问题是获取 log(AggValue1971/AggValue1970),我运行了你的代码,它显示 logValue 0.0005。但我使用计算器的值是 0.02,这是有道理的。你能告诉我如何在这个问题中得到 0.02 吗?公式应为 log(AggValue of 1971/AggValue of 1970) 即 log(459102.34375/437890.15625)。因为我有资本存量要计算。再次感谢你!非常感激
  • np.log 默认为自然对数。如果需要,请更改为np.log10。如果你想在AggValue上做,程序是一样的。仅确保您的数据框根据 YearCode 列进行排序。
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多