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?

Alexis
fonte
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)
Provavelmente rgbkrk
fonte
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)

blitu12345
fonte
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)
amalik2205
fonte
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')
Lucas P.
fonte
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')
kahled salah
fonte
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.

Iván Rodríguez
fonte