2016-10-14 263 views
2

enter image description here 我有上面的数据帧,我希望将其转换为csv文件。
我目前在使用df.to_csv('my_file.csv')来转换它,但我想留下3个空栏。对于上面的文件行,我有以下过程。将熊猫数据帧转换为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([]) 

我想将空白空间后面的数据框合并到三个空白列中。如何将数据框继续添加到现有的csv文件中,以便我可以在数据框之后添加更多的数据行。

+0

也许我误解了这个问题,但是有没有一个原因,你为什么不能创建一个单一的数据框w你想要的格式,然后写? – elelias

+0

@elelias不,我不能,它包含其他几行不同的格式。另外我花了很多时间把它们放在这个格式中。只有数据框才能输入到csv文件,我无法弄清楚如何去做。你能提出一些建议吗? – amazingCodingExperience

+1

什么不能只是将这些列添加到您的df与默认值,然后写入csv? – EdChum

回答

1

考虑将数据帧初始输出为临时文件。然后,在创建临时文件时,迭代地写入行,然后销毁临时文件。另外,在将数据框写入csv之前,请创建三个空白列。下面假设您需要两个任务:1)三个空白列和2)在Amazon/Ebay/Kindle行标题下写入数据框值。实施例的数据使用随机正常值和标量值wdvadwevadwdmpvwempv他们的名字的字符串文字:

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