python pandas - 如何将日期明智的股票csv转换为股票明智的csv文件

时间:2017-07-11 04:36:17

标签: python csv pandas stock stockquotes

我有类似日期的股票csv文件,如下所示。

EQ070717.CSV
EQ070716.CSV
EQ070715.CSV
[...]

他们有这种格式的股票数据:

SC_NAME,OPEN,HIGH,LOW,CLOSE
ABB,1457.70,1469.95,1443.80,1452.90,
AEGI,189.00,193.00,187.40,188.70
HDFC,1650.00,1650.00,1617.05,1629.20
[...]

如何将它们转换为库存特定的csv文件,可以作为pandas datafframe加载。我可以在.net中完成,但只是想知道python / pandas中是否有任何简单明了的方法。

修改:添加预期输出

根据库存名称创建单个库存文件:

ABB.csv
AEGI.csv
HDFC.csv

对于每个股票从所有文件中提取股票数据并添加到该股票csv: 例如,库存ABB,从每个日期csv读取库存数据,并将该信息添加到csv ABB.csv 中的新行。可以从文件名或文件修改日期属性中选择日期值。

DATE, OPEN,HIGH,LOW,CLOSE
070717, 1457.70,1469.95,1443.80,1452.90
070716, 1456.70,1461.95,1441.80,1450.90
070715, 1455.70,1456.95,1441.80,1449.90

3 个答案:

答案 0 :(得分:1)

我认为您需要glob来选择所有文件,在Get https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/${resourceProviderNamespace}/${resourceType}/${resourceName}/providers/microsoft.insights/metrics?$filter=(name.value eq 'Requests' or name.value eq 'http401' or name.value eq 'http403') and startTime eq 2017-07-11T12:30:00Z and endTime eq 2017-07-11T12:31:00Z&api-version=2016-06-01 中创建DataFrames dfs列表,然后使用concat作为一个大list comprehension来自所有DataFrame s:

CSV

如果输出import glob files = glob.glob('files/*.CSV') dfs = [pd.read_csv(fp) for fp in files] df = pd.concat(dfs, ignore_index=True) 中有必要的文件名:

DataFrame

答案 1 :(得分:1)

添加到@jezrael解决方案。因为用户想要每个特定于股票的csv文件。

for stock_name in df.SC_NAME.unique():
    df[df['SC_NAME']==stock_name].to_csv(path_to_dir+stock_name+'.csv')

答案 2 :(得分:0)

我的方法是使用单个表建立一个sqlite数据库。只有三列,market_date,symbol和csv_string(如果你想保留相对位置,可能是文件中#行的col)。读取所有文件并逐行将数据加载到表中。在符号列的表上创建索引。然后为read symbol, csv_string from stock_table order by symbol, market_date创建一个游标。使用itertools.groupby告知您何时循环遍历所有符号,以便关闭最后一个文件并打开下一个文件。

当然,如果你的数据足够少,它可以全部适合内存,你只需将元组插入一个列表,对列表进行排序,并使用groupby循环它来制作你的文件。