2015-09-28 43 views
1
# df is dataframe, f_out is a text file I am outputting to 
for index, row in df.iterrows(): 
    f_out.write(('%6d%4d%4d'+6*'%6.2f'+'\n') % 
       (row['year'],row['month'],row['day'], 
       row['sr'],row['tma'],row['tmi'], 
       row['apc'],row['rhu'],row['wnd'])) 

我想输出数据帧到一个文本文件的格式为:1.4.3大熊猫数据帧格式的文本文件

1979 1 1 3.19 12.51 17.61 1.40 0.77 6.89 

如何做到这一点,而无需通过使用iterrows所有行迭代?这种做法实在是太慢了

- 编辑:

样品数据帧是在这里: https://www.dropbox.com/s/d109fvj1higo88b/7_9.csv?dl=0

小片段在这里:

  air.2m ap day month rhu sr swr_diff tma tmi apc  wnd year 
1/1/1979 -20.9 0.0 1.0 1.0 0.8 2.3 26.3 -16.1 -20.9 73.4 4.8 1979 
1/2/1979 -25.2 0.0 2.0 1.0 0.8 2.2 25.2 -18.6 -25.2 70.6 4.4 1979 
1/3/1979 -26.2 0.0 3.0 1.0 0.8 2.5 29.4 -16.4 -26.2 82.1 4.7 1979 
1/4/1979 -25.6 0.0 4.0 1.0 0.8 2.0 23.6 -16.1 -25.6 66.2 4.5 1979 
1/5/1979 -29.6 0.0 5.0 1.0 0.8 2.8 32.2 -19.0 -29.6 88.1 3.4 1979 
1/6/1979 -24.6 0.0 6.0 1.0 0.8 2.7 31.2 -15.7 -24.6 85.3 4.5 1979 
1/7/1979 -22.8 0.0 7.0 1.0 0.9 2.6 30.5 -16.0 -22.8 84.1 3.4 1979 
1/8/1979 -24.0 0.0 8.0 1.0 0.8 2.6 29.9 -14.2 -24.0 81.9 4.1 1979 
1/9/1979 -19.0 0.0 9.0 1.0 0.9 2.8 32.6 -14.4 -19.0 87.8 3.2 1979 
1/10/1979 -20.9 0.0 10.0 1.0 0.8 2.4 28.0 -16.5 -20.9 77.1 2.1 1979 
1/11/1979 -24.2 3.1 11.0 1.0 0.8 2.2 25.0 -12.8 -24.2 73.4 3.1 1979 
1/12/1979 -14.5 1.7 12.0 1.0 0.9 1.8 20.7 -11.1 -14.5 63.0 2.4 1979 
1/13/1979 -16.9 6.3 13.0 1.0 0.9 1.9 22.5 -12.3 -16.9 69.6 7.2 1979 
+1

看看这有助于:http://stackoverflow.com/questions/31247198/python-pandas-write-content-of-dataframe-into-text-file – ZdaR

+0

感谢@ZdaR,这个问题不真的很有帮助,因为格式在我的情况下更复杂 – user308827

+0

您可以发布您的数据样本吗? –

回答

4

您可以在几个方面重新排序的列。一种是在输出时手动分配列名。

当您编写文件时,请使用to_string方法。它将以您想要的均匀间隔格式保存内容。见here

with open('filename.txt','w') as outfile: 
    df.to_string(outfile,columns=use_cols) 

如果您需要使用特定的浮点格式或字符串格式对单个列进行格式化,则可以这样做。见here

df['cost'] = df['cost'].map('${:,.2f}'.format)