2016-02-22 55 views
1

我有这样一个DF:拆分数据帧并写入新的CSV的基础上环

Allotment Year NDVI  A_Annex Bachelor 
A_Annex  1984 1.0  0.40  0.60 
A_Annex  1984 1.5  0.56  0.89 
A_Annex  1984 2.0  0.78  0.76 
A_Annex  1985 3.4  0.89  0.54 
A_Annex  1985 1.6  0.98  0.66 
A_Annex  1986 2.5  1.10  0.44 
A_Annex  1986 1.7  0.87  0.65 

,我想写每列到一个新的数据帧,并基于列名的后续CSV。所以我想为每列的内容添加一个新的csv。

到目前为止,我已经做到了这一点:

outpath='C:\' 
for column in df: 
    x=pd.DataFrame(df[column]) 
    outpath=outpath + column + '.csv' 
    x.to_csv(outpath) 

column包含每一个列名,当时我只是想写信给独立的。我想要的文件名会是这样的Allotment.csvYear.csvNDVI.csvA_Annex.csvBachelor.csv

+0

既然你已经接受了一个我不会添加一个答案,但你可以做到这一点的一条线:在DF'列:DF [专栏] .to_csv ( 'C:\' +列+“.csv格式)' – JohnE

+0

啊,好知道和简单得多,谢谢。只是好奇,如果我需要2个发送到列在一次新的CSV我会怎么做呢?例如如果我想送'Year'和'A_Annex'在一起吗? –

回答

1

此行收集的所有列名:因为它是对的每个循环的循环

运行

outpath = outpath + column + '.csv' 

这工作:

outpath='C:\' 
for column in df: 
    x=pd.DataFrame(df[column]) 
    outfile=outpath + column + '.csv' 
    x.to_csv(outfile) 

注意循环变量名从outpath变更为新变种outfile,这将防止文件名被汇总和错位。

我注意到.csv文件有两列,行号和值。 如果你不想行号,使用x.to_csv(outfile, index=False)