【问题标题】:How to multiply each value in DataFrame series in incremental order using Pandas如何使用 Pandas 以增量顺序将 DataFrame 系列中的每个值相乘
【发布时间】:2019-07-18 17:18:08
【问题描述】:

我的数据集df 如下所示:

time                    Open
2017-01-01 00:00:00     5.2475
2017-01-01 01:00:00     5.2180
2017-01-01 02:00:00     5.2128
...., ....
2017-12-31 23:00:00     5.7388

上面的df是一个小时系列

我想做的是multiply每个Open值从110然后重复。

例如:

  • 1st valuemultiplied1
  • 2nd valuemultiplied 2
  • 以此类推,直到10th value,然后在11th value,我们重复1,以此类推。

我做了什么?

我几乎只能将每个值乘以相同的数字,如下所示:

df['Open'] = df['Open'] * 1     # Number to multiply

但我无法进行增量迭代和计算。我可以在Python 中执行此操作,方法是添加增量counter 并迭代这些值,但我该如何处理Pandas

【问题讨论】:

  • 鉴于问题,这将不起作用。您应该使用@Quang Hoang 的解决方案

标签: python python-3.x pandas dataframe


【解决方案1】:

也许?

df['Open'] *= (np.arange(len(df)) % 10) + 1

【讨论】:

  • 谢谢!如果我想确保 1st value8 PM 开始,这样它只会从 8 PM 开始乘以到下一个 10 值,然后检查下一个8 PM 第 10 次计算后,multiplies 下一个 10 values 等等。基本上,它必须从8 PM 开始
  • @piRSquared OP 是什么?
  • 你是。原始海报
  • @floss 您的扩展问题比这要难一些,值得提出不同的问题/答案,因为它不适合发表评论。
  • 我想我会把它分解一下,以便更容易理解谁能解决最初的问题:)
【解决方案2】:

您可以使用数据框的索引,如果它不是 pandas 生成的索引,请创建一个并尝试如下代码

import pandas_datareader as pdr
import pandas as pd
##Connecting to yaoo and getting the stock prices
msft_data=pdr.get_data_yahoo('MSFT','2019-06-18').reset_index()
msft_data['num']= (msft_data.index%10)+1
msft_data['new_high'] = (msft_data.High * msft_data.num)
msft_data

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 2021-01-20
    • 2023-03-14
    • 1970-01-01
    • 2019-08-02
    • 2021-07-17
    • 2021-08-10
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多