Search code examples
pythonpandasfixed-width

Python Pandas, write DataFrame to fixed-width file (to_fwf?)


I see that Pandas has read_fwf, but does it have something like DataFrame.to_fwf? I'm looking for support for field width, numerical precision, and string justification. It seems that DataFrame.to_csv doesn't do this. numpy.savetxt does, but I wouldn't want to do:

numpy.savetxt('myfile.txt', mydataframe.to_records(), fmt='some format')

That just seems wrong. Your ideas are much appreciated.


Solution

  • Until someone implements this in pandas, you can use the tabulate package:

    import pandas as pd
    from tabulate import tabulate
    
    def to_fwf(df, fname):
        content = tabulate(df.values.tolist(), list(df.columns), tablefmt="plain")
        open(fname, "w").write(content)
    
    pd.DataFrame.to_fwf = to_fwf