2017-07-11 3 views
0

私は、以下のような日付の賢い在庫csvファイルを持っています。python pandas - 日付賢い在庫csvを株式賢明な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 
[...] 

は、どのように私はパンダのdatafframeとしてロードすることができ、特定のCSVファイルをストックするためにそれらを変換することができます。私は.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

あなたはそれらを結合したいですか? – Aditya

+0

すべてのファイルを一度に読み込み、すべてのcsvファイルを結合するか、単にcsvファイルを読み込むときに日付の列を追加する必要がありますか? –

+0

予想される出力を追加しました。 – SarkarG

答えて

1

私はすべてのCSV sから一つの大きなDataFrameためconcatを使用し、その後list comprehensionDataFramesdfsのリストを作成し、すべてのファイルを選択するためにglobが必要だと思うし、:出力に必要なファイル名ならば

import glob 

files = glob.glob('files/*.CSV') 
dfs = [pd.read_csv(fp) for fp in files] 
df = pd.concat(dfs, ignore_index=True) 

DataFrame

files = glob.glob('files/*.CSV') 
dfs = [pd.read_csv(fp) for fp in files] 
#win solution - double split 
keys = [x.split('\\')[-1].split('.')[0] for x in files] 
df = pd.concat(dfs, keys=keys) 
+1

私はパス操作に 'pathlib.Path'を使います。それで 'fp.name'を使うことができます –

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') 
0

私のアプローチは、単一のテーブルでsqliteデータベースを設定することです。 market_date、symbol、およびcsv_stringの3つの列(相対位置が保持されるようにするには、ファイル内の#行のcol)。すべてのファイルを読み込み、行ごとにテーブルにデータを読み込みます。シンボル列の表に索引を作成します。次に、read symbol, csv_string from stock_table order by symbol, market_dateのカーソルを作成します。最後のファイルを閉じて次のファイルを開くことができるように、すべてのシンボルをループしたときにお知らせするには、itertools.groupbyを使用してください。

もちろん、すべてがメモリに収まるような十分なデータがない場合は、リストにタプルを挿入し、リストをソートしてgroupbyを使用してファイルを作成します。

関連する問題