2017-09-19 27 views
2

Pythonを学び、csvを取得してデータフレームに変換し、列を変更してcsvを目的のスタイルに出力するスクリプトを作成することができます。列ごとに複数のcsvファイルに分割する

まあ、私は今、何をする必要があるかは、私の第二のカラムの内容に基づいて、出力の複数のCSVをすることができることです(最初の私は、出力のために削除インデックスは、ある)

私はのためのパラメータを設定していますユニークなデータ値に基づいてファイル名と出力パスを作成するためにFORループを使用します。

しかし、私がcsv(data.to_csv)を出力すると、4つのファイルはすべて同じでフィルタリングされていません。ここで

私のコードは私のデータフレームがデータ import_codeは私の第二のカラム(ないインデックス)であると呼ばれている

unique_code = data.import_code.unique() 
for importcode in unique_import_codes:  
    #print("%s" % importcode)    
    filename = importcode.replace(".","") + ".csv" 
    #print("%s" % filename)     
    path = r"C:/myrequiredpath/"  
    #print("%s" % path)      
    data.to_csv(path+filename, index=False) 

ある

任意のアイデアは歓迎します!

答えて

0

あなたは、データをフィルタリングするlocを使用することができます:あなたの目標はただそれぞれが名前として一意の値を持つ、元のデータフレームのコピーされ、ファイルをエクスポートすることである

unique_code = data.import_code.unique() 
for importcode in unique_import_codes: 
    filename = importcode.replace(".","") + ".csv" 
    path = r"C:/myrequiredpath/" 
    data.loc[data.import_code==importcode].to_csv(path+filename, index=False) 
0

ループのどこにもデータのサブセットを選択するための操作はありません。最後の行

data.to_csv(path+filename, index=False) 

毎回別のファイル名で変更されないデータフレームを書き出すだけです。

0

場合、私はこれを行くだろうルート。

unique_values = set(data['column_of_interest']) 

for value in unique_values: 
    filename = value + ".csv"   
    path = r"C:/myrequiredpath/"       
    data.to_csv(path+filename, index=False) 

各ファイルは、データのサブセットの輸出になりたい場合は、あなたのループにこれを追加します。

data[data['column of interest']==value] 
2

私はそれをこのようにしてください:

filename = r"C:/myrequiredpath/{}.csv" 

data.groupby('import_code') \ 
    .apply(lambda g: g.to_csv(filename.format(g.name), index=False)) 
+0

美しい出来です。 – piRSquared

+0

@piRSquared、ありがとうございます! :) – MaxU

関連する問題