Como evitar Python / Pandas criando um índice em um CSV salvo?


407

Estou tentando salvar um csv em uma pasta depois de fazer algumas edições no arquivo.

Toda vez que eu uso pd.to_csv('C:/Path of file.csv')o arquivo csv, há uma coluna separada de índices. Quero evitar imprimir o índice em csv.

Eu tentei:

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

E para salvar o arquivo ...

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

No entanto, ainda recebi a coluna de índice indesejado. Como posso evitar isso ao salvar meus arquivos?


59
tente em index=Falsevez deindex_col
Jeff

Podemos usar isso no ms excel também?
Nabih Ibrahim Bawazir

Sim, você podepd.to_excel(r'file.xlsx', index = False)
bfree67

index_coltrabalha para read_html()também.
caram 18/03

Respostas:


606

Use index=False.

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

Solução embaraçosamente fácil, tenho vergonha de chegar a esse 6 anos depois.
peluzza

89

Existem duas maneiras de lidar com a situação em que não queremos que o índice seja armazenado no arquivo csv.

  1. Como outros já declararam, você pode usar index = False enquanto salva seu
    dataframe no arquivo csv.

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

  2. Ou você pode salvar seu quadro de dados como está em um índice e, durante a leitura, basta soltar a coluna sem nome 0 que contém seu índice anterior.

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


11
"e durante a leitura, basta soltar a coluna sem nome 0, que contém seu índice anterior", a melhor maneira de fazer isso é especificar pd.read_csv(..., index_col=[0]e evitar a chamada "soltar" extra.
cs95 28/05/19

30

Se você não deseja nenhum índice, leia o arquivo usando:

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

salve usando

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

2
Não acredito que ninguém tenha notado o erro. Para salvar a CSV, seriadf.to_csv('file.csv', index=False)
Medwin

11
Lol ninguém prestando atenção. Obrigado.
amalik2205

22

Como outros já declararam, se você não deseja salvar a coluna de índice em primeiro lugar, pode usar df.to_csv('processed.csv', index=False)

No entanto, como os dados que você normalmente usa, possuem algum tipo de índice, digamos uma coluna 'timestamp', eu manteria o índice e carregaria os dados usando-o.

Portanto, para salvar os dados indexados, primeiro defina o índice e salve o DataFrame:

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

Depois, você pode ler os dados com o índice:

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

ou leia os dados e defina o índice:

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

Se eu definir o index_col então salvo, ainda tenho uma coluna numérica sem nome no csv. (Python2)
smiller

14

Outra solução, se você deseja manter esta coluna como índice.

pd.read_csv('filename.csv', index_col='Unnamed: 0')

11
Exatamente o que eu estava procurando, obrigado. Que de alguma forma ajuda a traduzir o conceito de chave primária de forma transparente, mesmo quando se usa CSV
Tobbey

7

Se você deseja um bom formato, a próxima instrução é a melhor:

dataframe_prediction.to_csv('filename.csv', sep=',', encoding='utf-8', index=False)

Nesse caso, você tem um arquivo csv com ',' separado entre as colunas e o formato utf-8. Além disso, o índice numérico não será exibido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.