Как избежать 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)

Тем не менее, я все еще получил столбец нежелательных индекса. Как я могу избежать этого, когда я сохраняю свои файлы?

Alexis
источник
59
попробуйте index=Falseвместоindex_col
Джефф
Можем ли мы использовать это и в MS Excel?
Набих Ибрагим Бавазир
Да, вы можетеpd.to_excel(r'file.xlsx', index = False)
bfree67
index_colработает read_html()также.
Карам

Ответы:

606

Использование index=False.

df.to_csv('your.csv', index=False)
Вероятно, rgbkrk
источник
Смущающе простое решение, мне стыдно дойти до этого 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)

blitu12345
источник
1
«и во время чтения вы просто отбрасываете столбец без имени 0, содержащий ваш предыдущий индекс», лучший способ сделать это - указать pd.read_csv(..., index_col=[0]и избежать дополнительного вызова «drop».
cs95
30

Если вы не хотите индексировать, прочитайте файл, используя:

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

сохранить его с помощью

df.to_csv('file.csv', index=False)
amalik2205
источник
2
Я не могу поверить, что никто не заметил ошибку. Чтобы сохранить в CSV, это было быdf.to_csv('file.csv', index=False)
MEdwin
1
Lol никто не обращает внимания. Спасибо.
amalik2205
22

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

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

Итак, чтобы сохранить проиндексированные данные, сначала установите их индекс, а затем сохраните 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')
Лукас П.
источник
Если я установил index_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. Кроме того, числовой индекс не появится.

Иван Родригес
источник