拆分数据帧并根据循环编写新的csv

时间:2016-02-22 01:09:20

标签: python csv pandas iteration dataframe

我有这样的df:

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

1 个答案:

答案 0 :(得分:1)

这一行收集了所有列名:

outpath = outpath + column + '.csv'

因为它在for循环的每个循环上运行

这有效:

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

请注意,循环变量名称已从outpath更改为新的var outfile,这将阻止文件名被聚合和损坏。

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