2016-10-14 22 views
2

enter image description here 私は上記のデータフレームを持っており、それをcsvファイルに変換したいと考えています。
私は現在df.to_csv('my_file.csv')を使用して変換していますが、空白の列を3つ残したいと思います。上記のファイルの行については、以下の手順があります。pandasデータフレームをcsvに変換する

dirname = os.path.dirname(os.path.abspath(__file__)) 
csvfilename = os.path.join(dirname, 'MainFile.csv') 
with open(csvfilename, 'wb') as output_file: 
    writer = csv.writer(output_file, delimiter=',') 
    writer.writerow([]) 
    writer.writerow(["","Amazon","Weekday","Weekend"]) 
    writer.writerow(["","Ebay",wdvad,wevad]) 
    writer.writerow(["","Kindle",wdmpv,wempv]) 
    writer.writerow([]) 

ブランクスペースの直後のデータフレームを3つの空白の列で組み込む必要があります。既存のcsvファイルにデータフレームを続けて追加するには、データフレームの後にデータを含む行を追加することができます。

+0

多分私は疑問を誤解しているかもしれませんが、単一のデータフレームを作成できない理由がありますwあなたが望むフォーマットを書いて、それを書いてください。 – elelias

+0

@eleliasいいえ、それはそれぞれ異なるフォーマットを持ついくつかの他の行を含んでいます。さらに、私はこのフォーマットでそれらを置くのに多くの時間を費やしました。 csvファイルに入力するデータフレームのみが残っているため、どのようにデータフレームを作成するかわかりません。何かお勧めしますか? – amazingCodingExperience

+1

デフォルト値でこれらの列をdfに追加してからcsvに書き込むことはできませんか? – EdChum

答えて

1

データフレームをそのまま一時ファイルに出力することを検討してください。次に、MainCSVの作成中に、一時ファイルを読み込み、繰り返し書き出して一時ファイルを破棄します。また、csvにデータフレームを書き込む前に、3つの空の列を作成します。

ここでは、1)空白の列が3つあり、2)Amazon/Ebay/Kindleの行ヘッダーの下にデータフレームの値が書き込まれていることを前提としています。例のデータは、ランダムな正常値を使用し、のためのスカラー値は、をwdvad をwevad、wdmpvwempvは、自分の名前の文字列リテラルです:

import csv, os 
import pandas as pd 

# TEMP DF CSV 
dirname = os.path.dirname(os.path.abspath(__file__))  
df = pd.DataFrame([np.random.normal(loc=3.0, scale=1.0, size=24)*1000 for i in range(7)], 
        index=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 
         'Friday', 'Saturday', 'Sunday']) 
df['Blank1'], df['Blank2'], df['Blank3'] = None, None, None 

df.to_csv(os.path.join(dirname, 'temp.csv'))  # OUTPUT TEMP DF CSV 

# MAIN CSV 
csvfilename = os.path.join(dirname, 'MainFile.csv') 
tempfile = os.path.join(dirname, 'temp.csv') 

wdvad = 'wdvad'; wevad = 'wevad'; wdmpv = 'wdmpv'; wempv = 'wempv' 

with open(csvfilename, 'w', newline='') as output_file: 
    writer = csv.writer(output_file) 
    writer.writerow([""]) 
    writer.writerow(["","Amazon","Weekday","Weekend"]) 
    writer.writerow(["","Ebay",wdvad,wevad]) 
    writer.writerow(["","Kindle",wdmpv,wempv]) 
    writer.writerow([""]) 

    with open(tempfile, 'r') as data_file: 
     for line in data_file: 
      line = line.replace('\n', '') 
      row = line.split(",")    
      writer.writerow(row) 

os.remove(tempfile)        # DESTROY TEMP DF CSV 

出力

CSV File Output

関連する問題