Python df循环和应用';pct#U变更';函数到特定行--AttributeError:';浮动';对象没有属性';pct#U变更';
这是我的第一个问题,我对编码(3mo)还不熟悉。如果我不能很好地解释我自己,请直截了当 我正在处理一个大型的股票期权df,希望遍历每一行,并将'pct_change()'函数应用于'optionalas'==前一行'optionalas'的行。我已经做了一个单独的列标记为“匹配”,以确定这是真的Python df循环和应用';pct#U变更';函数到特定行--AttributeError:';浮动';对象没有属性';pct#U变更';,python,pandas,numpy,pandas-groupby,Python,Pandas,Numpy,Pandas Groupby,这是我的第一个问题,我对编码(3mo)还不熟悉。如果我不能很好地解释我自己,请直截了当 我正在处理一个大型的股票期权df,希望遍历每一行,并将'pct_change()'函数应用于'optionalas'==前一行'optionalas'的行。我已经做了一个单独的列标记为“匹配”,以确定这是真的 index, optionalias, quotedate, last, match, percent_change 0 SPY200103P00260000 2020-01-03 0.01
index, optionalias, quotedate, last, match, percent_change
0 SPY200103P00260000 2020-01-03 0.01 False 0
1 SPY200103P00265000 2020-01-02 0.01 False 0
2 SPY200103P00265000 2020-01-03 0.01 True 0
3 SPY200103P00270000 2020-01-02 0.01 False 0
4 SPY200103P00272500 2020-01-02 0.01 False 0
5 SPY200103P00272500 2020-01-03 0.01 True 0
6 SPY200103P00275000 2020-01-02 0.01 False 0
put\u选项\u df\u图像:
“pct_change()”函数将针对每个唯一的“optionaas”而不是整个数据集进行计算
我试图创建一个for循环,将'pct_change()'函数应用于'match'列==True的行,但我收到以下错误,即使列'last'是float64数据类型
for i, row in puts_grouped.iterrows():
return_val = 0
if row['match'] == True:
return_val = row['last'].pct_change() * 100
row.set_value(i,'percent_change', return_val)
AttributeError:“float”对象没有属性“pct\u change”
属性错误图像:
我尝试过的备选方案:
- 我没有创建for循环,而是尝试使用groupby().pct_change(),但它产生了一个奇怪的输出
- 一个不同的for循环要么卡住,要么永远运行
- 然而,另一个没有成功的for循环:
puts_grouped1 = puts_grouped[(puts_grouped['match'] == True)]
然后将pct_change()应用于该组1
puts_grouped1['last'].pct_change()
请记住,pct_change()计算当前元素和先前元素的百分比变化,因此您将获得的第一个输出将始终为NaN如果您的日期按升序排序,则您不需要组内的日期列:
df_historical_put.groupby(“optionalas”)['last']。pct_change()
应该可以工作
for i in puts_grouped['match']:
put_option_returns = []
if i == True:
returns = puts_grouped['last'].pct_change() * 100
put_option_returns.append(returns)
else:
returns = 0
put_option_returns.append(returns)
puts_grouped1 = puts_grouped[(puts_grouped['match'] == True)]
puts_grouped1['last'].pct_change()