我正在尝试合并2个数据帧。由于Blobtrigger,我必须检查正在读取的是哪个文件。此外,我使用Async是因为它从一行跳到另一行(多线程(,现在python逐行执行命令,这让我更容易导航,但如果这是多余的,请告诉我。当它到达pd.merge时,我得到了这个错误:
分配之前引用的局部变量"Deb">
async def main(myblob: func.InputStream, outputblob: func.Out[str]) -> None:
if myblob.name.__contains__("Deb"):
logging.info("Deb was found")
Deb = read_excel_files("x", "Deb.xlsx")
logging.info("Starting cleaning Process")
.....
logging.info("Cleaning Deb is finished")
if myblob.name.__contains__("Sach"):
logging.info("Sach was found")
Sach = read_excel_files("x", "Sach.xlsx")
logging.info("Starting cleaning Process")
........
logging.info("Cleaning Sach is finished")
Konten = pd.merge(Sach, Deb, how="outer")
outputblob.set(Konten.to_string())
logging.info("Konten is uploaded")
我认为在第一个IF中使用的变量可以在第二个IF中访问。我刚刚观察到,在这行之后
Sach = read_excel_files("x", "Sach.xlsx")
有值的Deb将被取消分配。我应该用吗?改为复制?
尝试在第一个if
语句之后使用else
为Deb
赋值,例如None
,第二个和Sach
也是如此。然后将合并转移到第三个if
语句下,该语句在尝试合并之前检查Deb
和Sach
的真实性
类似于:
if myblob.name.__contains__("Deb"):
...
Deb = read_excel_files("x", "Deb.xlsx")
...
else:
Deb = pd.DataFrame()
if myblob.name.__contains__("Sach"):
...
Sach = read_excel_files("x", "Sach.xlsx")
...
else:
Sach = pd.DataFrame()
if not Deb.empty and not Sach.empty:
Konten = pd.merge(Sach, Deb, how="outer")