[英]How to create new excel file each time when I save DataFrame in Python Pandas?
我在 Python Pandas 中有如下功能(它是示例):
def xyz():
df = pd.DataFrame({"a" : [1,1,1]})
TodaysDate = time.strftime("%Y-%m-%d")
excelfilename = "raport_" +TodaysDate +".xlsx"
df.to_excel(excelfilename, sheet_name="raport", index=True)
return df
每次运行上述函数时,现有的 excel 文件都会被覆盖,但每次运行该函数时都需要创建一个新的 excel 文件。 如何修改我的函数以在 Python 中执行此操作?
您可以将TodaysDate = time.strftime("%Y-%m-%d")
更改为TodaysDate = str(time.strftime("%Y-%m-%d %X")).replace(":", "")
或TodaysDate = str(TodaysDate.strftime("%Y-%m-%d %H%M%S"))
这将为您提供额外的小时/分钟/秒来创建您的 Excel。 因此,除非您每秒多次运行此功能,否则这应该可以满足您的需求。
也许是这样的。 取决于您要生成多少个 excel 文件。
import random
excelfilename = "raport_" + str(random.randrange(9999)) +TodaysDate +".xlsx"
所以你可以这样做:
def xyz(itr):
df = pd.DataFrame({"a" : [1,1,1]})
TodaysDate = time.strftime("%Y-%m-%d")
excelfilename = "raport_" +TodaysDate + str(itr) + ".xlsx"
df.to_excel(excelfilename, sheet_name="raport", index=True)
return df
for i in range(9): #or smth another iteration
xyz(i)
在我看来,你真的应该使用 ArchAngelPwn 的解决方案。 应用随机数可能会起作用,但您仍然有 1/1000 的机会会覆盖一个文件。 此外,您可能不知道哪个文件属于哪个循环/运行。
您还可以将文件名保存在列表中并检查它是否存在:
fn = []
def xyz():
df = pd.DataFrame({"a" : [1,1,1]})
TodaysDate = time.strftime("%Y-%m-%d")
excelfilename = "raport_" +TodaysDate +".xlsx"
temp = len(np.where((np.array(fn) == excelfilename)))
fn.append(excelfilename)
df.to_excel("raport_" +TodaysDate + "_" + temp + ".xlsx", sheet_name="raport", index=True)
return df
这是因为 % 在您的 excelfilename 中,因为您使用的是 %X。
只是改变:
TodaysDate = time.strftime("%Y-%m-%d %X")
至:
TodaysDate = time.strftime("%Y-%m-%d %H_%M_%S")
我已经仔细检查过,它对我有用:))
完整代码:
import pandas as pd
import time
def xyz():
df = pd.DataFrame({"a": [1, 1, 1]})
TodaysDate = time.strftime("%Y-%m-%d %H_%M_%S")
excelfilename = "raport_" + TodaysDate + ".xlsx"
df.to_excel(excelfilename, sheet_name="raport", index=True)
return df
xyz()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.