Python: Printing dataframe to csv
Question: I am currently using this code:

    
    
    import pandas as pd
    AllDays = ['a','b','c','d']
    TempDay = pd.DataFrame( np.random.randn(4,2) ) 
    TempDay['Dates'] = AllDays
    TempDay.to_csv('H:\MyFile.csv', index = False, header = False)
    

But when it prints it prints the array before the dates with a header row. I
am seeking to print the dates before the TemperatureArray and no header rows.

Edit: The file is with the TemperatureArray followed by Dates: [
TemperatureArray, Date].

    
    
    -0.27724356949570034,-0.3096554106726788,a
    -0.10619546908708237,0.07430127684522048,b
    -0.07619665345406437,0.8474460146082116,c
    0.19668718143436803,-0.8072994364484335,d
    

I am looking to print: [ Date TemperatureArray]

    
    
    a,-0.27724356949570034,-0.3096554106726788
    b,-0.10619546908708237,0.07430127684522048
    c,-0.07619665345406437,0.8474460146082116
    d,0.19668718143436803,-0.8072994364484335
    


Answer: The [pandas.Dataframe.to_csv](http://pandas.pydata.org/pandas-
docs/version/0.17.1/generated/pandas.DataFrame.to_csv.html) method has a
keyword argument, `header=True` that can be turned off to disable headers.

However, it sometimes does not work (from experience). Using it in conjunction
with `index=False` should solve your issue.

For example, this snippet should fix your issue:

    
    
    TempDay.to_csv('C:\MyFile.csv', index=False, header=False)
    

Here is a full example showing how it disables the header row:

    
    
    >>> import pandas as pd
    >>> import numpy as np
    >>> df = pd.DataFrame(np.random.randn(6,4))
    >>> df
              0         1         2         3 
    0  1.295908  1.127376 -0.211655  0.406262 
    1  0.152243  0.175974 -0.777358 -1.369432 
    2  1.727280 -0.556463 -0.220311  0.474878 
    3 -1.163965  1.131644 -1.084495  0.334077 
    4  0.769649  0.589308  0.900430 -1.378006 
    5 -2.663476  1.010663 -0.839597 -1.195599 
    
    >>> # just assigns sequential letters to the column
    >>> df[4] = [chr(i+ord('A')) for i in range(6)]
    >>> df
              0         1         2         3  4
    0  1.295908  1.127376 -0.211655  0.406262  A
    1  0.152243  0.175974 -0.777358 -1.369432  B
    2  1.727280 -0.556463 -0.220311  0.474878  C
    3 -1.163965  1.131644 -1.084495  0.334077  D
    4  0.769649  0.589308  0.900430 -1.378006  E
    5 -2.663476  1.010663 -0.839597 -1.195599  F
    
    >>> # here we reindex the headers and return a copy
    >>> # using this form of indexing just requires you to provide
    >>> # a list with all the columns you desire and in the order desired
    >>> df2 = df[[4, 1, 2, 3]]
    >>> df2
       4         1         2         3
    0  A  1.127376 -0.211655  0.406262
    1  B  0.175974 -0.777358 -1.369432
    2  C -0.556463 -0.220311  0.474878
    3  D  1.131644 -1.084495  0.334077
    4  E  0.589308  0.900430 -1.378006
    5  F  1.010663 -0.839597 -1.195599
    
    >>> df2.to_csv('a.txt', index=False, header=False)
    >>> with open('a.txt') as f:
    ...     print(f.read())
    ... 
    A,1.1273756275298716,-0.21165535441591588,0.4062624848191157
    B,0.17597366083826546,-0.7773584823122313,-1.3694320591723093
    C,-0.556463084618883,-0.22031139982996412,0.4748783498361957
    D,1.131643603259825,-1.084494967896866,0.334077296863368
    E,0.5893080536600523,0.9004299653290818,-1.3780062860066293
    F,1.0106633581546611,-0.839597332636998,-1.1955992812601897
    

If you need to dynamically adjust the columns, and move the last column to the
first, you can do as follows:

    
    
    # this returns the columns as a list
    columns = df.columns.tolist()
    # removes the last column, the newest one you added
    tofirst_column = columns.pop(-1)
    # just move it to the start
    new_columns = [tofirst_column] + columns
    
    # then you can the rest
    df2 = df[new_columns]
    

This simply allows you to take the current column list, construct a Python
list from the current columns, and reindex the headers without having any
prior knowledge on the headers.

