繁体   English   中英

每次在 Python Pandas 中保存 DataFrame 时如何创建新的 excel 文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM