我有这个代码:
import pandas as pd
import yfinance as yF
import datetime
from functools import reduce
def get_returns_change_period(tic,com,OHLC_COL1,OHLC_COL2):
df_Stock = yF.download(tickers = tic, period = "38y", interval = "1mo", prepost = False, repair = False)
df_Stock['MONTH'] = pd.to_datetime(df_Stock.index)
df_Stock = df_Stock.sort_values(by='MONTH')
df_Stock[com + ' % Change '+'3M'] = (((df_Stock[OHLC_COL1].shift(2) - df_Stock[OHLC_COL2]))/df_Stock[OHLC_COL2]) *100
df_Stock[com + ' % Change '+'3M'] = (df_Stock[com + ' % Change '+'3M'] * 100 )/df_Stock[OHLC_COL2]
df_Stock[com + ' % Change '+'2M'] = (((df_Stock[OHLC_COL1].shift(1) - df_Stock[OHLC_COL2]))/df_Stock[OHLC_COL2]) *100
df_Stock[com + ' % Change '+'2M'] = (df_Stock[com + ' % Change '+'2M'] * 100 )/df_Stock[OHLC_COL2]
df_Stock[com + ' % Change '+'M'] = (((df_Stock[OHLC_COL1].shift(0) - df_Stock[OHLC_COL2]))/df_Stock[OHLC_COL2]) *100
df_Stock[com + ' % Change '+'M'] = (df_Stock[com + ' % Change '+'M'] * 100 )/df_Stock[OHLC_COL2]
return df_Stock.filter(regex='% Change')
函数定义并调用。
get_returns_change_period('XOM','EXXON MOBIL','High','Open')
df_Industry包含2个不同的公司和相应的股票代码。
df_Industry = pd.DataFrame({'ID':['1', '2'], 'Ticker': ['AIN', 'TILE'], 'Company':['Albany International', 'Interface']})
df1 = df_Industry.apply(lambda x: get_returns_change_period(x.Ticker, x.Company, 'High','Open'), axis=1)
使用Apply Lambda函数将数据框中不同公司的Ticker和Company名称作为参数传递给该函数。
merged_df = pd.concat(df1.tolist(), axis=1)
merged_df
#merged_df.to_excel("output.xlsx")
#merged_df.to_csv("output.csv", index=False)
这给出了一个包含两家公司详细信息的pandas数据框架。
如何将结果存储在一个单独的Excel文件中的2个单独的电子表格中,以df_Industry的公司名称命名。
1条答案
按热度按时间kadbb4591#
IIUC,一个快速的解决方案是在
df1
(* 这似乎是一个系列,每行包含一个DataFrame *)上进行扩展,然后使用ExcelWriter
制作电子表格: