因为毕业论文,被逼的又捡起我心爱的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 ['...']:
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
|