Як уникнути створення Python / Pandas індексу в збереженому CSV?


407

Я намагаюся зберегти файл csv у папці після внесення змін у файл.

Кожен раз, коли я використовую pd.to_csv('C:/Path of file.csv')файл csv, є окремий стовпець індексів. Я хочу уникати друку індексу на csv.

Я намагався:

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

І щоб зберегти файл ...

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

Однак я все-таки отримав стовпчик небажаного індексу. Як я можу цього уникнути, коли зберігаю свої файли?


59
спробуйте index=Falseзамістьindex_col
Jeff

Чи можемо ми також використовувати це в ms excel?
Набіх Ібрагім Бавазір

Так, можнаpd.to_excel(r'file.xlsx', index = False)
bfree67

index_colпрацює read_html()також.
карам

Відповіді:


605

Використовуйте index=False.

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

Збентежуючи просте рішення, мені соромно досягти цього 6року пізніше.
peluzza

89

Є два способи вирішити ситуацію, коли ми не хочемо, щоб індекс зберігався у файлі csv.

  1. Як заявили інші, ви можете використовувати index = False , зберігаючи ваш
    кадр даних у файлі csv.

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

  2. Або ви можете зберегти свій кадр даних таким, яким він є в індексі, і під час читання ви просто опускаєте стовпець без назви 0, що містить ваш попередній індекс. Просто!

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


1
"і під час читання ви просто опускаєте стовпець без назви 0, що містить ваш попередній індекс", кращий спосіб зробити це - вказати pd.read_csv(..., index_col=[0]та уникати зайвих дзвінків "упустити".
cs95

30

Якщо вам не потрібен індекс, прочитайте файл, використовуючи:

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

збережіть його за допомогою

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

2
Я не можу повірити, що ніхто не помітив помилки. Щоб заощадити на CSV, було бdf.to_csv('file.csv', index=False)
MEdwin

1
Lol ніхто не звертає уваги. Дякую.
amalik2205

22

Як зазначають інші, якщо ви не хочете зберігати стовпчик індексів в першу чергу, ви можете використовувати df.to_csv('processed.csv', index=False)

Однак, оскільки дані, якими ви зазвичай користуєтесь, самі мають якийсь індекс, скажімо, стовпець "мітка часу", я б зберігав індекс і завантажував дані, використовуючи його.

Отже, для збереження індексованих даних спочатку встановіть їх індекс, а потім збережіть DataFrame:

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

Після цього ви можете або прочитати дані з індексом:

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

або прочитати дані, а потім встановити індекс:

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

Якщо я встановив індекс_col, то збережений, у мене все ще був числовий стовпчик без назви в csv. (Python2)
smiller

14

Ще одне рішення, якщо ви хочете зберегти цей стовпець як індекс.

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

1
Саме те, що я шукав, дякую. Це якимось чином допомагає прозоро перекладати поняття первинного ключа, навіть якщо використовується csv
Tobbey

7

Якщо ви хочете гарного формату, наступне твердження найкраще:

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

У цьому випадку у вас є файл csv з ',' як окремий між стовпцями та форматом utf-8. Крім того, числовий індекс не з’явиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.