提问人:Paul Kellermann 提问时间:11/2/2023 更新时间:11/2/2023 访问量:52
Pandas 读取 CSV 并发送到 Excel 落后一个条目
Pandas Reading CSV and sending to Excel One Entry Behind
问:
该程序应该通过 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,但它通过错误。
答:
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)
评论