我尝试使用.apply创建一个dataframe,其中包含以下函数的串联结果,该函数只是提取选项数据并将其放入表格形式
import pandas as pd
import yfinance as yf
def get_opt_data(ticker, expiration):
try:
data = yf.Ticker(ticker)
calls = data.option_chain(expiration).calls
calls['Type'] = 'CALL'
puts = data.option_chain(expiration).puts
puts['Type'] = 'PUT'
combined = pd.concat([calls,puts])
combined['Ticker'] = ticker
info = data.info
combined['Sector'] = info['sector']
combined['Industry'] = info['industry']
return combined
except:
pass
当我尝试使用以下命令提取数据时:
ticker_list = pd.Series(['AAPL','GOOGL','MSFT','NVDA'])
option_data = ticker_list.apply(lambda x: get_opt_data(x, '2023-07-21'))
我得到一个包含结果 Dataframe 的系列,而不是连接 Dataframe 以创建单个 Dataframe 。
我在过去做过类似的事情,包括grouby和工作,我想我不明白为什么grouby是必要的工作。下面是前面正确组合结果的代码。
grouped_data = raw_data.groupby('Ticker', group_keys=False).apply(lambda x: get_indicators(x))
1条答案
按热度按时间eit6fx6z1#
这是一个简单的问题。Apply以1:1的方式转换事物-也就是说,您将获得与发送相同数量的盒子。你可能想在每个元素上调用
get_opt_data
,并concat结果:产量