我有这个数据集:
date event ticker initialprice120 initialprice90 initialprice60 initialprice30 initialprice7 finalprice
0 2010-11-18 MELA Mela Sciences FDA Panel MELA 0.0 0.0 0.0 0.0 0.0 0.0
1 2010-12-07 OREX Orexigen Therapeutics Inc PDUFA OREX 0.0 0.0 0.0 0.0 0.0 0.0
2 2010-12-07 SLXP SALIX PHARMACEUTICALS LTD PDUFA SLXP 0.0 0.0 0.0 0.0 0.0 0.0
3 2010-12-09 HGSI HUMAN GENOME SCIENCES INC PDUFA HGSI 0.0 0.0 0.0 0.0 0.0 0.0
4 2010-12-16 AZN Astrazeneca PDUFA AZN 0.0 0.0 0.0 0.0 0.0 0.0我想为每一行检索该确切日期的股票价格,并在此日期之前一周内,我编写了这段代码,它运行良好,我看到它正在为initialprice120、initialprice90等赋值,但最后不更新数据集的单元格,即如果打印的fda.head()价格行仍然是0.0:
import datetime
from datetime import timedelta
for index, row in fda1.iterrows():
try:
ticker=row['ticker']
print(ticker)
end_date=row['date'].strftime('%Y-%m-%d')
start_date120=row['date'] - timedelta(days=120)
start_date120=start_date120.strftime('%Y-%m-%d')
yahoo_financials = YahooFinancials(ticker)
data = yahoo_financials.get_historical_price_data(start_date=start_date120,
end_date=end_date,
time_interval='daily')
aapl_df = pd.DataFrame(data[ticker]['prices'])
initialprice120=float(aapl_df.iloc[0,4])
initialprice30=float(aapl_df.iloc[20,4])
initialprice60=float(aapl_df.iloc[40,4])
initialprice90=float(aapl_df.iloc[60,4])
initialprice7=float(aapl_df.iloc[78,4])
finalprice=float(aapl_df.iloc[len(aapl_df)-1,4])
row['finalprice']=float(finalprice)
row['initialprice120']=float(initialprice120)
row['initialprice30']=float(initialprice30)
row['initialprice60']=float(initialprice60)
row['initialprice90']=float(initialprice90)
row['initialprice7']=float(initialprice7)
except:
pass发布于 2022-08-11 06:14:28
有关系列操作,请参见https://pandas.pydata.org/docs/reference/api/pandas.Series.html。
若要通过标签访问单个值,请使用row.at[label] = ...或fda1.at[index, label] = ...
https://stackoverflow.com/questions/73315945
复制相似问题