gpt4 book ai didi

python - 每次运行程序时如何让Python在excel中添加一个新行?

转载 作者:行者123 更新时间:2023-12-04 22:18:06 30 4
gpt4 key购买 nike

我有一个从沙盒 api 收集数据的函数,并结合使用 pandas 和 xlsxwriter 将这些数据写入 ecxel 表。我的问题是每次运行程序时如何让 Python 将新数据写入新行?现在,每次我再次运行程序时,它都会覆盖旧数据。
这是我的代码:

import pandas as pd
import xlsxwriter
import requests

def collection():
api_url = f'https://sandbox.millistream.com/mws.fcgi?usr=sandbox&pwd=sandbox&cmd=quote&list=39970\
&fields=symbol,name,diff1dprc,lastprice,time&orderby=symbol&order=asc&timezone=Europe/Oslo&filetype=json'
data = requests.get(api_url).json()

my_columns = ['Time', 'Stocks price']
final_dataframe = pd.DataFrame(columns=my_columns)

final_dataframe = final_dataframe.append(
pd.Series(
[
data[2]['time'],
data[2]['lastprice']
],
index=my_columns),
ignore_index=True
)

writer = pd.ExcelWriter('Testing.xlsx', engine='xlsxwriter')
final_dataframe.to_excel(writer, 'AKER', index=False)

background_color = '#000000'
font_color = '#E8130F'

string_format = writer.book.add_format(
{
'font_color': font_color,
'bg_color': background_color,
'border': 1
}
)
dollar_format = writer.book.add_format(
{
'num_format': '$0.00',
'font_color': font_color,
'bg_color': background_color,
'border': 1
}
)

writer.sheets['AKER'].set_column('A1:A506', 20, string_format)
writer.sheets['AKER'].set_column('B1:B506', 10, dollar_format)
writer.save()
这是 Excel 中的返回:
Output
这就是我希望返回的样子:
Expected output

最佳答案

您正在覆盖数据,因为每次运行脚本时,您都会创建一个新的空数据框并将数据附加到该数据框。您需要做的是首先加载现有文件,将数据附加到该文件,保存并重复。
所以在你的代码中替换这第 11 行

final_dataframe = pd.DataFrame(columns=my_columns)
final_dataframe = pd.read_excel('Testing.xlsx')
我运行了几次程序,得到了你想要的输出:
enter image description here
最后,您将一直格式化列 A 直到最大行。不是什么大问题,但有更优雅的方法来格式化包含数据的行。

关于python - 每次运行程序时如何让Python在excel中添加一个新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66895133/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com