创建 df,与现有的 excel 数据进行比较,如果有,则忽略,如果没有,则添加到 excel 的底部 - Pandas/Python

Creating df, comparing to existing excel data, if there then ignoring, if not there then adding to bottom of excel - Pandas/Python

提问人:km150801 提问时间:11/8/2023 最后编辑:JNevillkm150801 更新时间:11/8/2023 访问量:33

问:

我正在从网站提取数据,并通过 pandas 将其推送到 python 中的 excel 文件。下次我提取数据时,我希望它将新数据与 excel 中的数据进行比较。如果它在那里,那么我希望它什么都不做。如果它不存在,我希望它添加到excel中列表的底部。我似乎无法获得持续添加而不是覆盖的代码。我可以让它添加一次,然后它开始覆盖。我遇到的另一个问题是将它与 excel 进行比较,并且仅在它不存在时才添加。帮助?

这是我的原始代码:

reschedules = pd.DataFrame(df)
orders = reschedules["Order #"]

if os.path.exists("reschedules.xlsx"):
    addresses = pd.read_excel("reschedules.xlsx")
else:
    addresses = pd.DataFrame(reschedules, columns=["Order #", "Account", "Address"]) 
    addresses.to_excel("reschdeules.xlsx", index=False)

for order in orders:
    address = order.split("<br>")[0]
    if address not in addresses["Order #"].values:
        addresses = addresses.append({"Order #": address}, ignore_index=True)
        addresses.to_excel("reschedules.xlsx", index=False)
        print(addresses)

以下是我在它再次开始覆盖 excel 之前能够工作一两次的内容:

reschedules = pd.DataFrame(df)
builderorders = reschedules["Order #"]

if os.path.exists("reschedules.xlsx"):
    from openpyxl import load_workbook
    from openpyxl.utils.dataframe import dataframe_to_rows
    wb = load_workbook("reschedules.xlsx")
    ws = wb['Sheet1']
    for row in dataframe_to_rows(reschedules):
        ws.append(row)

else:
    addresses = pd.DataFrame(reschedules, columns=["Order #", "Account", "Address"])  
    addresses.to_excel("reschdeules.xlsx", index=False)
熊猫 Excel

评论


答: 暂无答案