【问题标题】:How to sequentially create and save csv files using Pandas dataframe in python如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件
【发布时间】:2018-11-25 16:12:02
【问题描述】:

我有这个简单的代码,可以将 pandas 数据框保存到 csv 文件中。到目前为止,它通过覆盖文件名来工作,所以每次我运行它时,它都会用同名的新文件替换旧文件。是否可以保存此数据框但让它按顺序创建新文件,即如果目录中已经有一些名为“filename1”的文件,则将新文件命名为“filename2”,这样原始文件中的数据就不会丢失?

import pandas
datamatrix= [[1,2,3],[1,2,3],[1,2,3]])
x=pandas.DataFrame(datamatrix)  
pandas.DataFrame.to_csv(x,"filename.csv",',')

【问题讨论】:

  • 看看这里已经提出的这个问题stackoverflow.com/questions/13852700/…
  • 这不是熊猫特有的问题。您想在保存新文件之前读取文件夹中的文件
  • 您可以在写入之前使用os.path.exists(filename) 明确检查文件是否存在,但是将其枚举为无穷大可能不是您真正想要的,以一种方式添加时间戳可能是一个更好的主意,或者另一个只有一次冲突。类似filename_201806150311.csv

标签: python pandas csv dataframe


【解决方案1】:

我可能会用不同的时间戳保存它,除非有特定的原因需要数字编号。

使用时间戳

import pandas
import time
datamatrix= [[1,2,3],[1,2,3],[1,2,3]]
x=pandas.DataFrame(datamatrix)  
pandas.DataFrame.to_csv(x,"filename_" + time.strftime('%Y-%m-%d %H-%S') + ".csv",',')

你也可以只做一个 unix 时间戳

pandas.DataFrame.to_csv(x,"filename_" + str(int(time.time())) + ".csv",',')

How to get current time in python and break up into year, month, day, hour, minute?

What is the easiest way to get current GMT time in Unix timestamp format?

【讨论】:

    【解决方案2】:

    正如一些 cmets 所提到的,这不是一个具有pandas 特定答案的问题。只需使用os.listdir(os.getcwd()) 列出当前工作目录中要保存文件的所有文件。如果您尝试保存的文件名已存在于上述命令返回的列表中,则将版本号加 1,或完全另存为不同的文件名,由您决定。

    【讨论】:

      【解决方案3】:

      通过使用 time.strftime结合 f-string 和原始字符串文字,您可以将时间戳附加到您想要的格式

      import pandas
      import time
      timestr = time.strftime("%Y%m%d-%H%M%S")
      datamatrix= [[1,2,3],[1,2,3],[1,2,3]]
      x=pandas.DataFrame(datamatrix)  
      pandas.DataFrame.to_csv(fr'D:\filename_{timestr}.csv',encoding="utf-8", index=False, header=True)
      

      【讨论】:

        猜你喜欢
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-20
        相关资源
        最近更新 更多