将多个CSV文件加载到一个嵌套字典中

时间:2019-09-11 22:46:33

标签: python python-3.x pandas csv dictionary

我有多个CSV文件(每个股票代号一个),我希望将其加载到嵌套字典中,例如:

market_data["Symbol"] = { "Open": [], "High": [], "Low": [], "Close": [],
    "Volume": [], "Adjusted": [], "Date": [], "MA_10":[] }

对于每个符号,我都有一个不同的CSV文件,并且每个CSV文件都具有Open,High,Low等数据,但名称不一定相同。我想将其加载到该数据结构中,但无法弄清楚。

我希望它看起来像:

  

打印market_data

     

{'SYMBOL2':{'High':[20,22,23,19,21],'Volume':[100,200,300,   400、500],“已调整”:[12、13、14、15、16],“低”:[10、12、13、9,   1],'MA_10':[],'Date':['2015-01-01','2015-01-02','2015-01-03',   '2015-01-04','2015-01-05'],'关闭':[15、15、15、11、16],“打开”:   [12,13,14,15,15,16]},'SYMBOL1':{'高':[20,22,23,19,21],   “音量”:[100、200、300、400、500],“已调整”:[12、13、14、15、16],   '低':[10,12,13,9,1],'MA_10':[],'日期':['2015-01-01',   '2015-01-02','2015-01-03','2015-01-04','2015-01-05'],“关闭”:[15,   15、15、11、16],“打开”:[12、13、14、15、16]}}

2 个答案:

答案 0 :(得分:1)

我没有像您这样的CSV,但这就是我想出的。如果您有可以使用的CSV,我会很乐意对其进行测试并进行改进。

至少现在看来它可以与AAPL.csv一起使用。

更新版本:

import csv
market_data = {}
list_of_files = ['AAPL.csv']
for file in list_of_files:
        f = open(file, 'rt')
        reader = csv.reader(f)
        market_data[file] = {}
        flag = False
        headers = 0
        for row in reader:
                if (flag == False):
                        headers = row
                        for header in headers:
                                market_data[file][header] = []
                                flag = True
                else:
                        data = row
                        print(data)
                        for a, header in zip(data, headers):
                                market_data[file][header].append(a)

print(market_data)

答案 1 :(得分:1)

大致上,您可以按照以下步骤进行操作:

import pandas as pd
# enter your filenames in the list
# if they are in a particular directory
# you can also use os.listdir or something 
# like that to get the actual filenames
filenames= ['ibm.csv']
result_dict= dict()
for file in filenames:
    # load the csv in a dataframe
    df= pd.read_csv(file, sep=',')
    symbol= file.split('.')[0]
    symbol_dict= result_dict.setdefault(symbol, dict())
    # process the dataframe columnwise
    # turning each column into a key in the dict
    # and it's values into a list
    for col, ser in df.items():
        symbol_dict.setdefault(col, list()).extend(ser.to_list())