【问题标题】:How to avoid Python/Pandas creating an index in a saved csv?如何避免 Python/Pandas 在保存的 csv 中创建索引?
【发布时间】:2014-01-17 16:09:54
【问题描述】:

在对文件进行一些编辑后,我试图将 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)

但是,我仍然得到了不需要的索引列。保存文件时如何避免这种情况?

【问题讨论】:

  • 我们也可以在 ms excel 中使用它吗?
  • 是的,你可以pd.to_excel(r'file.xlsx', index = False)
  • index_col 也适用于 read_html()

标签: python csv indexing pandas


【解决方案1】:

使用index=False

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

【讨论】:

    【解决方案2】:

    有两种方法可以处理我们不希望将索引存储在 csv 文件中的情况。

    1. 正如其他人所说,您可以在保存
      的同时使用 index=False 数据帧到 csv 文件。

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

    2. 或者您可以使用索引保存数据框,并在读取时删除包含先前索引的列unnamed 0。简单!

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

    【讨论】:

    • "并且在阅读时,您只需删除包含先前索引的未命名 0 列",更好的方法是指定 pd.read_csv(..., index_col=[0],并避免额外的 "drop" 调用。
    【解决方案3】:

    如果您不想要索引,请使用以下命令读取文件:

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

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

    【讨论】:

    • 我不敢相信没有人注意到这个错误。要保存到 csv,它将是 df.to_csv('file.csv', index=False)
    【解决方案4】:

    正如其他人所说,如果您不想首先保存索引列,可以使用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')
    

    【讨论】:

    • 如果我设置 index_col 然后保存,我仍然在 csv 中有一个未命名的数字列。 (Python2)
    【解决方案5】:

    如果您想将此列保留为索引的另一种解决方案。

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

    【讨论】:

    • 正是我想要的,谢谢。这在某种程度上有助于透明地翻译主键的概念,即使使用 csv
    • 好主意!!!我试过了,非常优雅的解决方案!!!
    【解决方案6】:

    如果你想要一个好的格式,下一个语句是最好的:

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

    在这种情况下,您有一个 csv 文件,其中包含“,”作为分隔列和 utf-8 格式。 另外,不会出现数字索引。

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多