如何在数据框行中找到 return 的股票代码?
How to find the return of stock Tickers in rows of dataframe?
我正在尝试每天使用 :
查找我的代码 return
((close - previous close)/previous close)
我使用
在数据框中创建了 Return 列
DF['Return']=((DF.Close - DF.Close.shift(1))/DF.Close.shift(1)).
事实是,我的第一行对于 ABM 股票是正确的,因为没有之前的收盘价,但是第二行也应该 return NaN,因为 MMM 不应该有之前的收盘价。我该如何解决这个问题。
Date Ticker Close Div High Low Open Splits Volume Return
0 2019-06-18 ABT 80.868233 0.0 81.033031 79.414117 79.927903 0.0 6253000.0 NaN
1 2019-06-18 MMM 160.269012 0.0 160.651364 156.268355 156.529469 0.0 3623000.0 0.981854
2 2019-06-19 ABT 81.750397 0.0 81.915195 80.509552 80.848845 0.0 4113400.0 -0.489918
3 2019-06-19 MMM 159.233871 0.0 161.154934 159.038029 160.287664 0.0 2777400.0 0.947805
4 2019-06-20 ABT 82.341743 0.0 82.710117 81.740706 82.244796 0.0 6436400.0 -0.482888
.....
我的输出应该是这样的:
Date Ticker Close Div High Low Open Splits Volume Return
0 2019-06-18 ABT 80.868233 0.0 81.033031 79.414117 79.927903 0.0 6253000.0 NaN
1 2019-06-18 MMM 160.269012 0.0 160.651364 156.268355 156.529469 0.0 3623000.0 NaN
2 2019-06-19 ABT 81.750397 0.0 81.915195 80.509552 80.848845 0.0 4113400.0 0.010909
3 2019-06-19 MMM 159.233871 0.0 161.154934 159.038029 160.287664 0.0 2777400.0 -0.00646
4 2019-06-20 ABT 82.341743 0.0 82.710117 81.740706 82.244796 0.0 6436400.0 0.007234
.....
您需要先使用 groupby
,然后再使用 shift
,如下所示:
DF['Return']=((DF.Close - DF.groupby('Ticker').Close.shift(1))/DF.groupby('Ticker').Close.shift(1))
我不知道你之前的所有代码,所以让我做一个完整的例子以防万一:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 1, 2], 'B': [4, 5, 6, 7]})
df['C'] = (df['B'] - df.groupby('A')['B'].shift())/df.groupby('A')['B'].shift()
我正在尝试每天使用 :
查找我的代码 return((close - previous close)/previous close)
我使用
在数据框中创建了 Return 列DF['Return']=((DF.Close - DF.Close.shift(1))/DF.Close.shift(1)).
事实是,我的第一行对于 ABM 股票是正确的,因为没有之前的收盘价,但是第二行也应该 return NaN,因为 MMM 不应该有之前的收盘价。我该如何解决这个问题。
Date Ticker Close Div High Low Open Splits Volume Return
0 2019-06-18 ABT 80.868233 0.0 81.033031 79.414117 79.927903 0.0 6253000.0 NaN
1 2019-06-18 MMM 160.269012 0.0 160.651364 156.268355 156.529469 0.0 3623000.0 0.981854
2 2019-06-19 ABT 81.750397 0.0 81.915195 80.509552 80.848845 0.0 4113400.0 -0.489918
3 2019-06-19 MMM 159.233871 0.0 161.154934 159.038029 160.287664 0.0 2777400.0 0.947805
4 2019-06-20 ABT 82.341743 0.0 82.710117 81.740706 82.244796 0.0 6436400.0 -0.482888
.....
我的输出应该是这样的:
Date Ticker Close Div High Low Open Splits Volume Return
0 2019-06-18 ABT 80.868233 0.0 81.033031 79.414117 79.927903 0.0 6253000.0 NaN
1 2019-06-18 MMM 160.269012 0.0 160.651364 156.268355 156.529469 0.0 3623000.0 NaN
2 2019-06-19 ABT 81.750397 0.0 81.915195 80.509552 80.848845 0.0 4113400.0 0.010909
3 2019-06-19 MMM 159.233871 0.0 161.154934 159.038029 160.287664 0.0 2777400.0 -0.00646
4 2019-06-20 ABT 82.341743 0.0 82.710117 81.740706 82.244796 0.0 6436400.0 0.007234
.....
您需要先使用 groupby
,然后再使用 shift
,如下所示:
DF['Return']=((DF.Close - DF.groupby('Ticker').Close.shift(1))/DF.groupby('Ticker').Close.shift(1))
我不知道你之前的所有代码,所以让我做一个完整的例子以防万一:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 1, 2], 'B': [4, 5, 6, 7]})
df['C'] = (df['B'] - df.groupby('A')['B'].shift())/df.groupby('A')['B'].shift()