python批量合并excel文件,从每个文件中抽取同样的列合并

文章介绍了一种使用Python编程语言中的pandas库来读取和合并多个Excel文件的方法,这些文件包含股票数据,特别是科创板的成分股信息。程序首先读取指定文件夹中的所有文件名,然后逐个读取文件,将数据合并到一个DataFrame中,最后删除包含缺失值的行,并将结果保存为一个新的CSV文件。
摘要由CSDN通过智能技术生成

因为这学期课程想要分析股票数据,但下载的成分股被分为多个excel文件,为方便起见,写了这个合并excel的程序
我的文件主要格式如下:
这是科创50的文件:
在这里插入图片描述

这是科创50成分股文件:
这是每个成分股文件
它里面的内容如下:采用***\t***分割
在这里插入图片描述
这是合并后的结果:
在这里插入图片描述
下面是代码部分:

import os
import pandas as pd


# 读取文件夹里面所有文件的文件名
def read_file_name(file_path):
    file_names = [i for i in os.walk(file_path)]
    file_names_list = file_names[0][2]
    return file_names_list


# 读取文件并合并成同一个df
def merge_excel(file_path, file_name_list):
    df = pd.DataFrame(pd.read_csv(file_path + '\\' + file_name_list[0],
                                  sep='\t', encoding='gbk', skiprows=[0])['      日期'])
    for file_name in file_name_list:
        title = pd.read_csv(file_path + '\\' + file_name,
                            encoding='gbk', nrows=1, header=None)[0][0].split(' ')[1]
        tex = pd.read_csv(file_path + '\\' + file_name,
                          sep='\t', encoding='gbk', skiprows=[0])['    收盘']
        tex = pd.DataFrame(tex)
        tex = tex.rename(columns={'    收盘': title})
        df = pd.concat([df, tex], axis=1)
    df = df.dropna(how='any')
    return df


if __name__ == '__main__':
    file_path = 'D:\\Study_software\\xinan\\T0002\\export\\科创50_20220912_20230227'
    file_name_list = read_file_name(file_path)
    df = merge_excel(file_path, file_name_list)

    index = pd.read_csv('D:\\Study_software\\xinan\\T0002\\export\\000688.xls',
                        sep='\t', encoding='gbk', skiprows=[0])[['      时间', '    收盘']]
    index = index.rename(columns={'      时间': '      日期'})
    index['      日期'] = index['      日期'].str.strip()
    index['      日期']

    total = pd.merge(df, index, how='left', on='      日期')
    total.to_csv('D:\\Study_software\\xinan\\T0002\\export\\科创50.csv', index=False)
    print('保存成功')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值