【问题标题】:pandas for python creates multiple index columns when saving df in csvpython的pandas在csv中保存df时创建多个索引列
【发布时间】:2021-02-13 09:22:40
【问题描述】:

当我迭代这段代码时,pandas 会不断在我的 csv 中创建新的索引列。

import pandas as pd

credentials = pd.read_csv("credentials.csv")

email = "jarda@yahoo.cz"
nick = "jarda"
passw = "heslo"
csfd_conf_link = "test.link"

dict_to_append = {"nick": nick, "pass": passw, "email": email, "conf_link": csfd_conf_link}

credentials_updated = credentials.append(dict_to_append, ignore_index=True)
credentials_updated.to_csv("credentials.csv")

所以它最终看起来像这样this(在屏幕截图中更明显):

   Unnamed: 0  Unnamed: 0.1  ...                         email                                          conf_link
0           0           0.0  ...                adam@seznam.cz                                               test
1           1           1.0  ...                 pepa@gmail.cz                                               test
2           2           2.0  ...  philbake.da.murt.l@gmail.com  https://www.csfd.cz/potvrzeni/registration/?co...
3           3           3.0  ...                jarda@yahoo.cz                                          test.link
4           4           4.0  ...                jarda@yahoo.cz                                          test.link
5           5           5.0  ...                jarda@yahoo.cz                                          test.link
6           6           NaN  ...                jarda@yahoo.cz                                          test.link

我知道可以使用credentials_updated.to_csv("credentials.csv", index=False) 关闭索引。但是,如果我想让列索引怎么办? 任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 多个索引列出现在 CSV 输出中?请提供minimal reproducible example在屏幕截图中更清晰可见您应该分享实际的 CSV,它更清晰、更方便。

标签: python pandas dataframe csv dictionary


【解决方案1】:

如果您想保留Index 往返,您可以在调用pd.read_csv 时指定index_col,并在调用to_csv 时保留index=True

import pandas as pd

try:
    credentials = pd.read_csv("credentials.csv", index_col=0)
except FileNotFoundError:
    credentials = pd.DataFrame()
...

credentials_updated.to_csv("credentials.csv")

如果您出于任何原因删除您的"credentials.csv",try/except 将帮助您。

【讨论】:

  • 要扩展一点为什么,这是解决方案:您当前正在读取 csv,但未指定已经存在索引列。因此,每次您在其中阅读它时,都会创建一个新的索引列。
猜你喜欢
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
相关资源
最近更新 更多