How to avoid Python/Pandas creating an index in a saved csv?

570,069

Solution 1

Use index=False.

df.to_csv('your.csv', index=False)

Solution 2

There are two ways to handle the situation where we do not want the index to be stored in csv file.

  1. As others have stated you can use index=False while saving your
    dataframe to csv file.

    df.to_csv('file_name.csv',index=False)

  2. Or you can save your dataframe as it is with an index, and while reading you just drop the column unnamed 0 containing your previous index.Simple!

    df.to_csv(' file_name.csv ')
    df_new = pd.read_csv('file_name.csv').drop(['unnamed 0'],axis=1)

Solution 3

If you want no index, read file using:

import pandas as pd
df = pd.read_csv('file.csv', index_col=0)

save it using

df.to_csv('file.csv', index=False)

Solution 4

As others have stated, if you don't want to save the index column in the first place, you can use df.to_csv('processed.csv', index=False)

However, since the data you will usually use, have some sort of index themselves, let's say a 'timestamp' column, I would keep the index and load the data using it.

So, to save the indexed data, first set their index and then save the DataFrame:

df.set_index('timestamp')
df.to_csv('processed.csv')

Afterwards, you can either read the data with the index:

pd.read_csv('processed.csv', index_col='timestamp')

or read the data, and then set the index:

pd.read_csv('filename.csv')
pd.set_index('column_name')

Solution 5

Another solution if you want to keep this column as index.

pd.read_csv('filename.csv', index_col='Unnamed: 0')
Share:
570,069
Alexis
Author by

Alexis

Analyst at UC Berkeley using Python

Updated on July 08, 2022

Comments

  • Alexis
    Alexis almost 2 years

    I am trying to save a csv to a folder after making some edits to the file.

    Every time I use pd.to_csv('C:/Path of file.csv') the csv file has a separate column of indexes. I want to avoid printing the index to csv.

    I tried:

    pd.read_csv('C:/Path to file to edit.csv', index_col = False)
    

    And to save the file...

    pd.to_csv('C:/Path to save edited file.csv', index_col = False)
    

    However, I still got the unwanted index column. How can I avoid this when I save my files?

  • Tobbey
    Tobbey almost 6 years
    Exactly what I was looking for, thank you. That somehow helps to translate the concept of primary key transparently, even when using csv
  • smiller
    smiller about 5 years
    If I set the index_col then saved, I still had a numerical unnamed column in the csv. (Python2)
  • cs95
    cs95 almost 5 years
    "and while reading you just drop the column unnamed 0 containing your previous index" a better way do to this is specify pd.read_csv(..., index_col=[0], and avoid the extra "drop" call.
  • MEdwin
    MEdwin over 4 years
    I cant believe nobody noticed the error. To save to csv, it would be df.to_csv('file.csv', index=False)
  • Dave
    Dave over 3 years
    Very good idea!!! I tried it, and it's very elegant solution!!!