Python / Pandalar'ın kaydedilmiş bir CSV'de dizin oluşturmasını nasıl önleyebilirim?


407

Dosyada bazı düzenlemeler yaptıktan sonra bir klasöre bir csv kaydetmeye çalışıyorum.

Her kullandığımda pd.to_csv('C:/Path of file.csv')Csv dosyasını dizinlerin ayrı bir sütunu var. Dizini csv'ye yazdırmaktan kaçınmak istiyorum.

Denedim:

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

Ve dosyayı kaydetmek için ...

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

Ancak, yine de istenmeyen dizin sütun var. Dosyalarımı kaydettiğimde bunu nasıl önleyebilirim?


59
index=Falseyerine deneyinindex_col
Jeff

Bunu ms excel'de de kullanabilir miyiz?
Nabih Ibrahim Bawazir

Evet yapabilirsinizpd.to_excel(r'file.xlsx', index = False)
bfree67

index_coliçin read_html()de çalışır .
karam

Yanıtlar:


605

Kullanın index=False.

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

Utanç verici derecede kolay bir çözüm, bu 6 yıla daha sonra ulaşmaktan utanıyorum.
peluzza

89

Dizinin csv dosyasında saklanmasını istemediğimiz durumu ele almanın iki yolu vardır.

  1. Diğerlerinin belirttiği gibi , dataframe'inizi csv dosyasına kaydederken index = False kullanabilirsiniz
    .

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

  2. Veya veri çerçevenizi bir dizinle olduğu gibi kaydedebilirsiniz ve okurken önceki dizininizi içeren isimsiz 0 sütununu bırakmanız yeterlidir.

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


1
msgstr "ve okuma sırasında sadece önceki dizini içeren isimsiz 0 sütununu bırakın" bunu yapmak için daha iyi bir yol belirtmek pd.read_csv(..., index_col=[0]ve ekstra "bırak" çağrısı kaçının.
cs95

30

Dizin istemiyorsanız, aşağıdakileri kullanarak dosyayı okuyun:

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

kullanarak kaydet

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

2
Kimsenin hatayı fark etmediğine inanamıyorum. df.to_csv('file.csv', index=False)
CSV'ye

1
Lol hiç kimse dikkat etmiyor. Teşekkürler.
amalik2205

22

Diğerlerinin de belirttiği gibi, dizin sütununu ilk etapta kaydetmek istemiyorsanız, df.to_csv('processed.csv', index=False)

Ancak, genellikle kullanacağınız veriler bir tür dizine sahip olduklarından, 'zaman damgası' sütunu diyelim, dizini saklıyorum ve verileri kullanarak yükleyeceğim.

Bu nedenle, dizinlenmiş verileri kaydetmek için önce dizinlerini ayarlayın ve ardından DataFrame'i kaydedin:

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

Daha sonra, verileri dizinle okuyabilirsiniz:

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

veya verileri okuyun ve ardından dizini ayarlayın:

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

Eğer index_col sonra kaydedilmiş ayarlamak, hala csv sayısal bir adsız sütun vardı. (Python2)
smiller

14

Bu sütunu dizin olarak tutmak istiyorsanız başka bir çözüm.

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

1
Tam aradığım şey, teşekkür ederim. Bu şekilde csv kullanırken bile, şeffaf birincil anahtar kavramını çevirmek için yardımcı olur
Tobbey

7

İyi bir biçim istiyorsanız, sonraki ifade en iyisidir:

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

Bu durumda, sütunlar ve utf-8 biçimi arasında ayrı olarak ',' bulunan bir csv dosyanız olur. Ayrıca, sayısal dizin görünmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.