简体   繁体   English

将熊猫数据框输出到格式化的文本文件

[英]Outputting pandas dataframe to formatted text file

# 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']))

I would like to output a dataframe to a text file that is formatted as: 我想将数据帧输出到格式为以下内容的文本文件:

  1979   1   1  3.19 12.51 17.61  1.40  0.77  6.89

How do I do this without iterating through all rows using iterrows? 如何在不使用迭代遍历所有行的情况下执行此操作? That approach is really slow 这种方法真的很慢

--EDIT: - 编辑:

Sample dataframe is here: https://www.dropbox.com/s/d109fvj1higo88b/7_9.csv?dl=0 示例数据帧在此处: https ://www.dropbox.com/s/d109fvj1higo88b/7_9.csv?dl =0

small snippet here: 这里的小片段:

            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

You can reorder the columns in a few ways. 您可以通过几种方式对列进行重新排序。 One is to just manually assign column names when outputting. 一种是仅在输出时手动分配列名。

use_cols=['year','month','day',...other columns]

When you write the file, use the to_string method. 编写文件时,请使用to_string方法。 It will save things in the evenly spaced format you want. 它将以所需的均匀间隔格式保存内容。 See here . 这里

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

If you need to format individual columns with specific float or string formats, you can do something like this. 如果您需要使用特定的float或string格式设置各个列的格式,则可以执行以下操作。 See here . 这里

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM