【问题标题】:Arithmetic operations for groups within a dataframe数据框中组的算术运算
【发布时间】:2021-12-30 08:09:40
【问题描述】:

我已经加载了多个 CSV(时间序列)来创建一个数据框。此数据框包含多只股票的数据。现在我想计算所有数据点的 1 个月回报。

每只股票有 172 个数据点,即从索引 0 到 171。下一只股票的时间序列再次从索引 0 开始。

当我尝试计算 1 个月的回报时,除了新股票的索引 0 之外,所有数据点都得到了正确计算。因为它是在拿上一只股票的171指数的差价。

我希望根据股票名称计算回报,所以我尝试了 for 循环,但它似乎不起作用。

例如在附图(突出显示)中,使用 SHREECEM 计算公司名称 ITC 的 1 个月回报。我希望 SHREECEM 的第一个值 1Mreturn 应该是 NaN

【问题讨论】:

标签: python-3.x pandas dataframe


【解决方案1】:

使用 groupby 代替 for 循环可以获得你想要的结果:

Mreturn_function = lambda df: df['mean_price'].diff(periods=1)/df['mean_price'].shift(1)*100
gw_stocks.groupby('CompanyName').apply(Mreturn_function)

【讨论】:

  • 非常感谢!有效。我收到语法错误,因为函数不能以更改的数字开头。
  • 如果此答案对您有所帮助,请投票并接受作为解决方案。这样未来的读者可以更轻松地找到正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多