183

This is the example of my dataset.

>>> user1 = pd.read_csv('dataset/1.csv')
>>> print(user1)
          0  0.69464   3.1735   7.5048
0  0.030639  0.14982  3.48680   9.2755
1  0.069763 -0.29965  1.94770   9.1120
2  0.099823 -1.68890  1.41650  10.1200
3  0.129820 -2.17930  0.95342  10.9240
4  0.159790 -2.30180  0.23155  10.6510
5  0.189820 -1.41650  1.18500  11.0730

How to push down the first column and add the names column [TIME, X, Y, and Z] on the first column.

The desired output is like this:

       TIME        X        Y        Z
0         0  0.69464   3.1735   7.5048
1  0.030639  0.14982  3.48680   9.2755
2  0.069763 -0.29965  1.94770   9.1120
3  0.099823 -1.68890  1.41650  10.1200
4  0.129820 -2.17930  0.95342  10.9240
5  0.159790 -2.30180  0.23155  10.6510
6  0.189820 -1.41650  1.18500  11.0730

6 Answers 6

274

I'd do it like this:

colnames=['TIME', 'X', 'Y', 'Z'] 
user1 = pd.read_csv('dataset/1.csv', names=colnames, header=None)
Sign up to request clarification or add additional context in comments.

4 Comments

Is header=None necessary since we provide the column names?
If the column names are supplied, the parameter header is not required. As per the documentation: "if column names are passed explicitly then the behavior is identical to header=None". See pandas.pydata.org/docs/reference/api/pandas.read_csv.html
Can I exclude some of those columns directly?
header=None produces oodles of error statements. Panda 1.5.3, Python 3.11.4, MacOS Monterey
32

we can do it with a single line of code.

 user1 = pd.read_csv('dataset/1.csv', names=['TIME', 'X', 'Y', 'Z'], header=None)

Comments

13

If we are directly use data from csv it will give combine data based on comma separation value as it is .csv file.

user1 = pd.read_csv('dataset/1.csv')

If you want to add column names using pandas, you have to do something like this. But below code will not show separate header for your columns.

col_names=['TIME', 'X', 'Y', 'Z'] 
user1 = pd.read_csv('dataset/1.csv', names=col_names)

To solve above problem we have to add extra filled which is supported by pandas, It is header=None

user1 = pd.read_csv('dataset/1.csv', names=col_names, header=None)

Comments

13

In addition to above answers if your dataset already has column names and you want to replace it with your custom names then set header=0 instead of header=None

2 Comments

To get them: columns = chunk.columns.tolist()
this is so useful I feel like it should at least be mentioned in the answer, even though it's not what the OP asked for
9
user1  = pd.read_csv('dataset/1.csv',  names=['Time',  'X',  'Y',  'Z']) 

names parameter in read_csv function is used to define column names. If you pass extra name in this list, it will add another new column with that name with NaN values.

header=None is used to trim column names is already exists in CSV file.

Comments

1

Use nrows=1 to avoid consuming loading time if the dataset is too large.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.