2017-07-09 1 views
2

私は大量の電気負荷データを持つ大規模なCSVを持っています。それを1年ごとに複数のファイルに分割したいと思います。つまり、2013年、2014年、2015年の1月、2月、最初の列(python)の日付に基づいてcsvファイルをそれぞれのCSVファイルに分割する方法は?

私はフォーラムで多くのソリューションを見直しましたが、運が全くありませんでした。私の現在のファイルは次のように構成されています。


01-JAN-11,1,34606,34677,35648,35685,31058,484,1730

01-JAN-11,2,35092,35142,36089,36142,31460、 520,1730

01-JAN-11,3,34725,34761,36256,36234,31109,520,1730

01-JAN-11,4,33649,33698,35628,35675,30174、 512,1730


Th日付列の列ヘッダーの名前は "SETTLEMENT DATE"です。私はパンダとdfの使用に精通していますが、これをどうやって行うかについて私の頭を包んでいるようには見えません!

ありがとうございます!

+2

これまでにどのようなコードを試しましたか? – cmaher

答えて

0

これはどのように行うことができます。

まず、あなたのcsv_fileからデータを読み込み、このようなあなたのcolsを保存する:あなたが持っているすべてを

df['Year'] = df['SETTLEMENT DATE'].apply(lambda x: x.split('-')[-1]) 
df['Month'] = df['SETTLEMENT DATE'].apply(lambda x: x.split('-')[1]) 

df = pd.read_csv('path/input.csv') 
cols = df.columns 

、あなたはMonthYearあるごdataframeに2つの列を追加します左に行うには、データフレームをcsv filesに月単位または年単位で書き込みます。それぞれfileにはの名前が付いていますまたはyear次のように:

for i in set(df.Year): # for classified by years files 
    filename = "path/"+i+".csv" 
    df.loc[df.Year == i].to_csv(filename,index=False,columns=cols) 

for i in set(df.Month): # for classified by months files 
    filename = "path/"+i+".csv" 
    df.loc[df.Month == i].to_csv(filename,index=False,columns=cols) 

希望これは参考になりました。

+0

ありがとう!私はx.splitコマンドを使って問題に取り掛かりました - "AttributeError: 'float'オブジェクトには、 'split'属性がありません。これはインポートタイプの結果である可能性があります。使用する代替機能はありますか?それはstr.splitですか? – tm553

+0

あなたのフィードバック@ tm553のおかげで、この答えで私はあなたの "決済日"は文字列形式であったと仮定しますが、 'str(x).split'を使うことができます、' x.str.split'は列全体を操作していますが、この場合xは実際にはdf ['SETTLEMENT DATE']列の要素なので、浮動小数点数やその他の要素型で動作するものが必要です –

関連する問題