我有类似日期的股票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
答案 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循环它来制作你的文件。