Làm cách nào để tránh Python / Pandas tạo chỉ mục trong csv đã lưu?


407

Tôi đang cố gắng lưu một csv vào một thư mục sau khi thực hiện một số chỉnh sửa cho tập tin.

Mỗi lần tôi sử dụng pd.to_csv('C:/Path of file.csv')tệp csv có một cột chỉ mục riêng. Tôi muốn tránh in chỉ mục lên csv.

Tôi đã thử:

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

Và để lưu tập tin ...

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

Tuy nhiên, tôi vẫn nhận được cột chỉ số không mong muốn. Làm thế nào tôi có thể tránh điều này khi tôi lưu các tập tin của tôi?


59
thử index=Falsethay vìindex_col
Jeff

Chúng ta có thể sử dụng điều này trong ms excel không?
Nabih Ibrahim Bawazir

Có, bạn có thểpd.to_excel(r'file.xlsx', index = False)
bfree67

index_collàm việc cho read_html()là tốt.
caram

Câu trả lời:


605

Sử dụng index=False.

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

Giải pháp dễ xấu hổ, tôi xấu hổ khi đạt đến 6y sau này.
peluzza

89

Có hai cách để xử lý tình huống mà chúng tôi không muốn chỉ mục được lưu trữ trong tệp csv.

  1. Như những người khác đã nói, bạn có thể sử dụng index = false trong khi lưu
    khung dữ liệu của bạn vào tệp csv.

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

  2. Hoặc bạn có thể lưu khung dữ liệu của mình như với một chỉ mục và trong khi đọc, bạn chỉ cần thả cột không tên 0 có chứa chỉ mục trước đó của bạn. Đơn giản!

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


1
"Và trong khi đọc, bạn chỉ cần thả cột không tên 0 có chứa chỉ mục trước đó của bạn" một cách tốt hơn để làm điều này là chỉ định pd.read_csv(..., index_col=[0]và tránh cuộc gọi "thả" thêm.
cs95

30

Nếu bạn muốn không có chỉ mục, hãy đọc tệp bằng cách sử dụng:

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

lưu nó bằng cách sử dụng

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

2
Tôi không thể tin rằng không ai nhận thấy lỗi. Để lưu vào csv, nó sẽ làdf.to_csv('file.csv', index=False)
MEdwin

1
Lol không có ai chú ý. Cảm ơn.
amalik2205

22

Như những người khác đã nêu, nếu bạn không muốn lưu cột chỉ mục ở vị trí đầu tiên, bạn có thể sử dụng df.to_csv('processed.csv', index=False)

Tuy nhiên, vì dữ liệu bạn thường sử dụng, có một số loại chỉ mục, giả sử cột 'dấu thời gian', tôi sẽ giữ chỉ mục và tải dữ liệu bằng cách sử dụng nó.

Vì vậy, để lưu dữ liệu được lập chỉ mục, trước tiên hãy đặt chỉ mục của chúng và sau đó lưu DataFrame:

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

Sau đó, bạn có thể đọc dữ liệu với chỉ mục:

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

hoặc đọc dữ liệu và sau đó đặt chỉ mục:

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

Nếu tôi đặt index_col rồi lưu, tôi vẫn có một cột không tên trong csv. (Python2)
smiller

14

Một giải pháp khác nếu bạn muốn giữ cột này là chỉ mục.

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

1
Chính xác những gì tôi đang tìm kiếm, cảm ơn bạn. Điều đó bằng cách nào đó giúp dịch khái niệm khóa chính một cách minh bạch, ngay cả khi sử dụng csv
Tobbey

7

Nếu bạn muốn một định dạng tốt, tuyên bố tiếp theo là tốt nhất:

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

Trong trường hợp này, bạn đã có tệp csv với ',' tách biệt giữa các cột và định dạng utf-8. Ngoài ra, chỉ số sẽ không xuất hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.