合并CSV文件列和名称列

时间:2019-02-01 00:04:42

标签: python pandas csv dataframe finance

我正在尝试将多个csv文件合并为ETF数据。这些csv文件具有以下数据结构。

           Date     Open   High    Low  Close  Volume
0      31/12/2018  16.00  16.22  15.83  16.22  113550
1      28/12/2018  16.59  16.60  16.22  16.22  196076
2      27/12/2018  17.04  17.10  16.66  16.66   77764
3      24/12/2018  18.12  18.16  17.50  17.51  137047
4      21/12/2018  17.33  18.00  17.20  17.74  162391
5      20/12/2018  17.13  17.42  16.90  17.42  118405

我已经使用glob将所有csv文件读取到一个数组中。

import glob
#To read all csv files
files = glob.glob('*.csv')

文件输出[]看起来像这样。

['BBOZ.csv', 'CORE.csv', 'DJRE.csv', 'ETPMAG.csv', 'ETPMPD.csv', 'ETPMPM.csv', 'GOLD.csv', 'HACK.csv', 'IGB.csv', 'IJR.csv', 'IXJ.csv', 'MOAT.csv', 'MVS.csv', 'NDQ.csv', 'OZR.csv', 'SPY.csv', 'STW.csv', 'TECH.csv', 'USD.csv', 'VAE.csv', 'VAP.csv', 'VAS.csv', 'VDHG.csv', 'VGE.csv', 'VGS.csv', 'VTS.csv', 'YANK.csv', 'ZUSD.csv']

每个csv文件都是ETF符号

我想创建一个数据框,该数据框从每个csv文件中获取['Close']列,并将其组合为带有股票代码的单个数据框,每一列均由每个符号的close值和日期填充为第一列

所以输出看起来像这样:

Date       BBOZ CORE DJRE ETPMAG ETPMPD .... ZUSD
31/12/2018 16   17   18   19     20     ...  21
30/12/2018 16   17   18   19     20     ...  22
29/12/2018 16   17   18   19     20     ...  23
28/12/2018 16   17   18   19     20     ...  24

Stock tables

我坚持如何创建该数据框。

1 个答案:

答案 0 :(得分:0)

您可以将列加载到字典中,然后将其传递到pd.concat

import glob

col_list = {}
for fname in glob.iglob('*.csv'):
    base, _ = os.path.splitext(fname)
    col_list[base] = pd.read_csv(fname, usecols=['Close'], squeeze=True)

pd.concat(col_list, axis=1)
相关问题