将多个Pandas数据框保存到单个Excel文件的不同工作表

sgtfey8w  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(84)

我有这个代码:

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的公司名称命名。

kadbb459

kadbb4591#

IIUC,一个快速的解决方案是在df1(* 这似乎是一个系列,每行包含一个DataFrame *)上进行扩展,然后使用ExcelWriter制作电子表格:

with pd.ExcelWriter("output.xlsx") as writer:
    for df, sn in zip(df1, df_Industry["Company"]):
        df.to_excel(writer, index=False, sheet_name=sn)

相关问题