Python应用-拼接excel中各sheet(拯救论文海量excel数据)

因为毕业论文,被逼的又捡起我心爱的python。
数据量太大,总是CTRL C 和CTRL V 搞错,一般人心态也遭不住,只能靠不出错的计算机。

将文件夹中将含有某一字段的excel表全部拼接起来

举个例子,可能会出现在WIND数据库下载100只股票的价格走势信息,这就会在文件夹内出现100个excel,如何用python将其拼接成一个excel。
(有一说一,我觉得我的方法很笨,所以有更简洁的请跳过或告诉我hhhh)
首先要确保每个表格中对应的列是一致的,然后进行下述操作。
下面代码以文件夹中有两类需拼接表格为例,如需拼接文件夹中所有带有price字样的表格和拼接所有带return的表格。

import pandas as pd
import os

path = r'file_path' # 文件夹的路径
green_capm, green_ff = list(), list()

file_names = os.listdir(path)
for file_name in file_names:
    if str(file_name)[str(file_name).rfind('(') + 1:str(file_name).rfind(
            ')')] in ['...']:
  	# 如果文件夹中除了price或return在文件名上还有其他筛选条件可以在此增加筛选项
    # 比如第一个模型使用了全量样本,第二个模型使用了局部样本,因此进行了二次筛选拼接
        if 'capm模型' in file_name:
            green_capm.append(file_name)
        elif 'ff模型' in file_name:
            green_ff.append(file_name)

df_capm_all = pd.DataFrame(data=None, columns=['date', 'ri-rf', 'rm-rf'])
df_ff_all = pd.DataFrame(data=None, columns=['date', 'ri-rf', 'rm-rf', 'smb', 'hml'])

for num, name_list in enumerate([green_capm, green_ff]):
    if num == 0:
        for capm_file in name_list:
            df_capm = pd.read_excel(capm_file, header=0, sheet_name=2)
            df_capm.columns = ['date', 'ri-rf', 'rm-rf']
            df_capm_all = pd.concat([df_capm_all, df_capm], ignore_index=True)
    elif num == 1:
        for ff_file in name_list:
            df_ff = pd.read_excel(ff_file, header=0, sheet_name=2)
            df_ff.columns = ['date', 'ri-rf', 'rm-rf', 'smb', 'hml']
            df_ff_all = pd.concat([df_ff_all, df_ff], ignore_index=True)
    
name_list = ['green_capm.xlsx', 'green_ff.xlsx']
i = 0
for df in [df_capm_all, df_ff_all]:
    df = df[~df['date'].isin(['2021-10-29', '2018-10-31', '2018-10-30'])]
    # 删除某几日的数据
    df.to_excel(name_list[i])
    i += 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值