如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件

Posted

技术标签:

【中文标题】如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件【英文标题】:How to sequentially create and save csv files using Pandas dataframe in python 【发布时间】: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",',')

【问题讨论】:

看看这里已经提出的这个问题***.com/questions/13852700/… 这不是熊猫特有的问题。您想在保存新文件之前读取文件夹中的文件 python: Create file but if name exists add number的可能重复 您可以在写入之前使用os.path.exists(filename) 明确检查文件是否存在,但是将其枚举为无穷大可能不是您真正想要的,以一种方式添加时间戳可能是一个更好的主意,或者另一个只有一次冲突。类似filename_201806150311.csv 【参考方案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)

【讨论】:

以上是关于如何在 python 中使用 Pandas 数据框顺序创建和保存 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用pandas将字典列表转换为数据框[重复]

如何在python pandas数据框中选择和更改数据[重复]

如何使用 Plotly 在 Python 中使用 Pandas 数据框列设置散点图悬停信息

python--pandas分组聚合

如何在python pandas中附加两个数据框[重复]

如何在python中使用groupby或pivot在这个pandas数据框中[重复]