我如何在 if-condition 中合并前一个单元格的值?
How can i incorporate value frem previous cell in if-condition?
我正在处理一些股票数据,我希望计算股价创下新高的次数,例如股票价格连续多少次高于前一个价格。然后应在股价旁边的一栏中计算更高的高点数量,如果股价未能创出更高的高点,则该栏中的值应“重置”为零。
我想要的结果是这样的:
Stock Price
Number of higher highs
150
0
275
1
300
2
280
0
300
1
350
2
400
3
我已经尝试了多种解决方案,但无法使它们起作用。我试过使用 if 语句,但我在编写条件“如果股票价格的值大于前一个值,那么具有更高高点数的列应该等于 1 + 前一个值”时遇到了问题.
工作示例:
import pandas as pd
data=[[150,0],[275,0],[300,0],[280,0],[300,0],[350,0],[400,0]]
df=pd.DataFrame(data,columns=['Stock Price','Number of higher highs'])
感谢所有意见和可能的解决方案!
希望这能解决您的问题
import pandas as pd
data=[[150,0],[275,0],[300,0],[280,0],[300,0],[350,0],[400,0]]
tmp = -1
for indx in range (len( data)):
if tmp == -1:
tmp = data[indx][0]
data[indx][1] = 0
else:
if data[indx][0] > tmp:
data[indx][1]=data[indx-1][1] + 1
tmp = data[indx][0]
df=pd.DataFrame(data,columns=['Stock Price','Number of higher highs'])
你也可以这样解决:
df.groupby((df['Stock Price'].le(df['Stock Price'].shift())).cumsum()).cumcount()
我正在处理一些股票数据,我希望计算股价创下新高的次数,例如股票价格连续多少次高于前一个价格。然后应在股价旁边的一栏中计算更高的高点数量,如果股价未能创出更高的高点,则该栏中的值应“重置”为零。
我想要的结果是这样的:
Stock Price | Number of higher highs |
---|---|
150 | 0 |
275 | 1 |
300 | 2 |
280 | 0 |
300 | 1 |
350 | 2 |
400 | 3 |
我已经尝试了多种解决方案,但无法使它们起作用。我试过使用 if 语句,但我在编写条件“如果股票价格的值大于前一个值,那么具有更高高点数的列应该等于 1 + 前一个值”时遇到了问题.
工作示例:
import pandas as pd
data=[[150,0],[275,0],[300,0],[280,0],[300,0],[350,0],[400,0]]
df=pd.DataFrame(data,columns=['Stock Price','Number of higher highs'])
感谢所有意见和可能的解决方案!
希望这能解决您的问题
import pandas as pd
data=[[150,0],[275,0],[300,0],[280,0],[300,0],[350,0],[400,0]]
tmp = -1
for indx in range (len( data)):
if tmp == -1:
tmp = data[indx][0]
data[indx][1] = 0
else:
if data[indx][0] > tmp:
data[indx][1]=data[indx-1][1] + 1
tmp = data[indx][0]
df=pd.DataFrame(data,columns=['Stock Price','Number of higher highs'])
你也可以这样解决:
df.groupby((df['Stock Price'].le(df['Stock Price'].shift())).cumsum()).cumcount()