Pandas 读取 CSV 并发送到 Excel 落后一个条目

Pandas Reading CSV and sending to Excel One Entry Behind

提问人:Paul Kellermann 提问时间:11/2/2023 更新时间:11/2/2023 访问量:52

问:

该程序应该通过 tkinter 小部件获取用户数据,然后将数据发送到 csv 文件。读取 csv 文件并将其转换为发送到 excel 的 dataFrame。该程序可以工作,只是它始终比当前落后一个条目。如果我输入 5 个条目,则只有 4 个条目显示在 excel 中。

下面是该方法的代码片段,当按下按钮时,将数据发送到 csv 到 dataframe,然后发送到 excel。

def enterbtn(df:pd.DataFrame):
    date = dateEntry.get()
    temperature = tempEntry.get()
    x = open('storage.csv', 'a')
    writer = csv.writer(x)
    row = [date,temperature]
    writer.writerow(row)
    df = pd.read_csv("storage.csv")
    df.to_excel('data.xlsx', sheet_name='Sheet1')
    #window.destroy()
    print(df)

我试图制作一种单独的方法来发送到 excel,但它通过错误。

python pandas excel csv tkinter

评论


答:

0赞 rasputin 11/2/2023 #1

为什么需要保存临时 .csv 文件?你能做如下的事情吗?

def enterbtn(df:pd.DataFrame):
    date = dateEntry.get()
    temperature = tempEntry.get()
    df.loc[len(df.index)] = [date, temperature] 
    df.to_excel('data.xlsx', sheet_name='Sheet1')
    #window.destroy()
    print(df)

评论

0赞 Paul Kellermann 11/3/2023
所以当我运行它时,它抛出了一堆错误,我不明白所有这些错误。我使用 loc() 方法遇到的问题是,当它将数据发送到 excel 文件时,它不会附加数据,而是不断覆盖第一行。
0赞 acw1668 11/2/2023 #2

在读取更改之前,您需要关闭 CSV 文件以使更改生效:

def enterbtn(df:pd.DataFrame):
    date = dateEntry.get()
    temperature = tempEntry.get()
    x = open('storage.csv', 'a')
    writer = csv.writer(x)
    row = [date,temperature]
    writer.writerow(row)
    x.close()  # close the file to save the change
    df = pd.read_csv("storage.csv")
    df.to_excel('data.xlsx', sheet_name='Sheet1')
    #window.destroy()
    print(df)