0

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 

1 Answer 1

2

The pandas.Dataframe.to_csv 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.

Sign up to request clarification or add additional context in comments.

7 Comments

Thanks for the suggestion. The bigger problem is that it prints the dates after the TemperatureArray but I need Dates before the TemperatureArray.
Can you provide a small sample? I thought you were mainly looking to turn off the headers. It will be a little bit hard to debug unless you can provide a small Dataframe as an example.
Or are you just looking for chronological "before", all the dates that occurred before the dates in the temperature array).
I updated the code above to show what I am looking for. Thanks
Edited and I do exactly that: I use column re-ordering in Pandas to return a copy of the dataframe, which we then dump to file without the headers.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.