我正在尝试将多个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
等
我坚持如何创建该数据框。
答案 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)