Python和Pandas使用数据框架创建多个动态Excel表



提前感谢!我已经挣扎了几天了,这意味着我该问一个问题了。我有一个程序,它使用模块"yfnance"提取三只股票的信息。它使用txt文件中的股票代码列表。我可以使用for循环将想要的信息获取到列表中每个股票行情器的数据帧中。然后,我想将每个单独的股票行情器的信息保存在Excel书籍中的表格上,表单名称为股票行情器。到目前为止,我最终创建了三个不同的数据帧,但Excel输出只有一个选项卡,其中包含最后请求的股票代码信息(MSFT(。我想我可能需要使用一个附加过程来创建一个带有每个数据帧信息的新选项卡,感谢您的建议。

代码

import platform
import yfinance as yf
import pandas as pd
import csv
# check versions
print('Python Version: ' + platform.python_version())
print('YFinance Version: ' + yf.__version__)
# load txt of tickers to list, contains three tickers
tickerlist = []
with open('tickers.txt') as inputfile:
for row in csv.reader(inputfile):
tickerlist.append(row)
# iterate through ticker txt file
for i in range(len(tickerlist)):
tickersymbol = tickerlist[i]
stringticker = str(tickersymbol)
stringticker = stringticker.replace("[", "")
stringticker = stringticker.replace("]", "")
stringticker = stringticker.replace("'", "")
# set data to retrievable variable
tickerdata = yf.Ticker(stringticker)
tickerinfo = tickerdata.info
# data items requested
investment = tickerinfo['shortName']
country = tickerinfo['country']
# create dataframes from lists
dfoverview = pd.DataFrame({'Label': ['Company', 'Country'],
'Value': [investment, country]
})
print(dfoverview)
print('-----------------------------------------------------------------')
#export data to each tab (PROBLEM AREA)
dfoverview.to_excel('output.xlsx',
sheet_name=stringticker)

输出

Python版本:3.7.7

Y财务版本:0.1.54

沃尔玛股份有限公司

国家美国

股份有限公司特斯拉

国家美国

公司微软公司

国家美国

进程已完成,退出代码为0

编辑:删除原始尝试并发布到正确的论坛/位置

如果您的所有股票行情信息都在一个数据帧中,Pandasgroupby()方法在这里很适合您(如果我正确理解您的问题(。这是伪的,但试着这样做:

import pandas as pd
# df here represents your single data frame with all your ticker info
# column_value is the column you choose to group by
# this column_value will also be used to dynamically create your sheet names
ticker_group = df.groupby(['column_value'])
# create the writer obj
with pd.ExcelWriter('output.xlsx') as writer:
# key=str obj of column_value, data=dataframe obj of data pertaining to key
for key, data in ticker_group:
ticker_group.get_group(key).to_excel(writer, sheet_name=key, index=False)

最新更新