Python 如何比较现有excel文件中的dict数据

Python 如何比较现有excel文件中的dict数据,python,pandas,dictionary,xlrd,Python,Pandas,Dictionary,Xlrd,如何将字典格式的数据与现有的xlsx文件进行比较。 字典键与excel标题相同。比较的简单方法是什么? 以下是一个例子: Dict中的数据: {'Sheet1': [{'ID': 1.0, 'NAME': 'hostname1', 'IP_ADDRESS': '192.168.1.1', 'STATUS': 'completed'}, {'ID': 2.0, 'NAME': 'hostname2', 'IP_ADDRESS': '192.168.1.2', 'STATUS': 'complete

如何将字典格式的数据与现有的xlsx文件进行比较。 字典键与excel标题相同。比较的简单方法是什么? 以下是一个例子: Dict中的数据:

{'Sheet1': [{'ID': 1.0, 'NAME': 'hostname1', 'IP_ADDRESS': '192.168.1.1', 'STATUS': 'completed'}, {'ID': 2.0, 'NAME': 'hostname2', 'IP_ADDRESS': '192.168.1.2', 'STATUS': 'completed'}, {'ID': 3.0, 'NAME': 'hostname3', 'IP_ADDRESS': '192.168.1.3', 'STATUS': 'in_progress'}, {'ID': 4.0, 'NAME': 'hostname4', 'IP_ADDRESS': '192.168.1.4', 'STATUS': 'completed'}]}
Excel文件:

我想将dict值与excel文件(通过工作表)进行比较,如果dict中的值不同,请更新excel文件。如果该条目在excel中不存在,只需在excel中添加新条目

我该怎么开始?比较、更新和扩展excel文件表中的新条目。谢谢

#####更新
首先,将字典转换为数据帧

import pandas as pd
data = {'ID': 1.0, 'NAME': 'hostname1', 'IP_ADDRESS': '192.168.1.1', 'STATUS': 'completed'}, {'ID': 2.0, 'NAME': 'hostname2', 'IP_ADDRESS': '192.168.1.2', 'STATUS': 'completed'}, {'ID': 3.0, 'NAME': 'hostname3', 'IP_ADDRESS': '192.168.1.3', 'STATUS': 'in_progress'}, {'ID': 4.0, 'NAME': 'hostname4', 'IP_ADDRESS': '192.168.1.4', 'STATUS': 'completed'}
df1 = pd.DataFrame.from_dict(data)
df1
# output

   ID       NAME   IP_ADDRESS       STATUS
0   1  hostname1  192.168.1.1    completed
1   2  hostname2  192.168.1.2    completed
2   3  hostname3  192.168.1.3  in_progress
3   4  hostname4  192.168.1.4    completed
然后将xlsx文件读取到另一个数据帧。假设excel文件中少了一个数据

df2 = pd.read_csv('filename')
df2

# output
   ID       NAME   IP_ADDRESS       STATUS
0   1  hostname1  192.168.1.1    completed
1   2  hostname2  192.168.1.2    completed
2   3  hostname3  192.168.1.3    NaN
df3.to_csv('filename')
现在使用
combine\u first()
函数进行检查

df3 = df2.combine_first(df1)
df3

# output
  ID       NAME   IP_ADDRESS       STATUS
0  1  hostname1  192.168.1.1    completed
1  2  hostname2  192.168.1.2    completed
2  3  hostname3  192.168.1.3  in_progress
3  4  hostname4  192.168.1.4    completed
比较所有内容后,可以将其保存到excel文件中

df2 = pd.read_csv('filename')
df2

# output
   ID       NAME   IP_ADDRESS       STATUS
0   1  hostname1  192.168.1.1    completed
1   2  hostname2  192.168.1.2    completed
2   3  hostname3  192.168.1.3    NaN
df3.to_csv('filename')

谢谢,看起来很简单,将
转换为_csv()
转换回
.xlsx
?在同一张工作表中?创建另一张工作表,是否可以使用现有工作表更新数据?dict数据是否与excel工作表相同,我不想触摸excel工作表。如何检查?感谢您无法直接比较excel文件和dict数据,但在将两者转换为数据帧后,您可以检查示例中的
df1.equals(df2)
它将生成
True
False
谢谢,我已经更新了代码。你认为代码有什么问题吗?