pandas写入excel中在dict出现的问题

pandas写入excel中在dict出现的问题

一、目标

对写入的数据设置为集合套集合的格式
如:

a={"a":{"b":"c"}

这样的集合在for循环结构中,即希望在for循环中出现自己需要的数据则可以进行相应的变更

程序如下:

 with open("情节.txt", "r", encoding="utf-8")as f:
        condition = f.readlines()
        for i in condition:


            tuple = process.extractOne(i.strip("\n"), text2)
            # print(list(tuple))
            if list(tuple)[-1] >= 90 and tuple[0] != "犯罪":
                element = list(tuple)[0]
                print("字符串模糊匹配的前几位为: ", element)
                if element + "\n" in condition:
                    print("在的: ",element)
                    element_list[title] = 1
                    dataframe[i.strip("\n")] = element_list
                else:
                    element_list[title] = 0
                    dataframe[i.strip("\n")] = element_list

在最后这段if-else的条件判断中就是试图实现自己上述的目标,如果符合条件则将集合中的内容设为1,否者设为0

二、问题

从逻辑上没有发现问题,单个输出时即没有else时,也没有问题
但是一旦存在else时,就会出现覆盖的问题,即后续内容会覆盖前面的内容,原因直到现在都没有找到

一旦匹配成果就会全部更新
在这里插入图片描述

没有匹配成果
在这里插入图片描述
最终结果则全部被覆盖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、解决方法

尝试过许多方法都没有办法解决,直到最后用来一个比较复杂的方法,就是先将内容全部设为0,然后对这个全部设为0的集合进行更新

"""两个集合以便更新,直接似乎无法更新"""
    for i in condition:
        element_list[title] = 0
        dataframe[i.strip("\n")] = element_list

    for i in condition:
        tuple = process.extractOne(i.strip("\n"), text2)
        if tuple[1]>90 and tuple[0] != "犯罪":
            print("存在的量刑情节: ", tuple[0])
            element_lists[title] = 1
            dataframes[tuple[0]] = element_lists
dataframe_ = dict(dataframe,**dataframes)


for i in condition:
        element_list[title] = 0
        dataframe[i.strip("\n")] = element_list
  是先全部设为0的集合

这个是匹配时得到的集合

 for i in condition:
        tuple = process.extractOne(i.strip("\n"), text2)
        if tuple[1]>90 and tuple[0] != "犯罪":
            print("存在的量刑情节: ", tuple[0])
            element_lists[title] = 1
            dataframes[tuple[0]] = element_lists

结果为:
全部设为0时:
在这里插入图片描述

匹配到的:
在这里插入图片描述

最后更新后的:
在这里插入图片描述

四、结语

虽然最后成功了,但是始终不明白之前的想法为什么不行!!!!

Pandas写入Excel文件,可以使用to_excel()方法实现数据写入。如果要指定写入位置,需要借助openpyxl库来实现。 首先,需要通过pip安装openpyxl库:pip install openpyxl 然后,在写入Excel文件时,通过指定writer参数来传递openpyxl的工作簿对象。这个工作簿对象可以通过openpyxl的load_workbook()方法来创建和指定。 假设我们要将数据写入Excel文件的第2行第2列的位置。代码如下: ``` import pandas as pd from openpyxl import load_workbook # 读取Excel文件,指定写入位置 book = load_workbook('test.xlsx') writer = pd.ExcelWriter('test.xlsx', engine='openpyxl') writer.book = book writer.sheets = dict((ws.title, ws) for ws in book.worksheets) # 写入数据 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df.to_excel(writer, startrow=1, startcol=1, index=False) # 保存Excel文件 writer.save() ``` 在这段代码中,我们首先读取了Excel文件,并通过load_workbook()方法创建了openpyxl的工作簿对象。然后将这个工作簿对象传递给了ExcelWriter的writer参数。接着,通过指定startrow和startcol参数,将df数据写入Excel文件的第2行第2列位置。 最后,我们调用writer的save()方法将数据保存到Excel文件中。 值得注意的是,在指定写入位置时,startrow和startcol的值都是从0开始的,而不是从1开始。因此,在这里我们将startrow和startcol参数均指定为1,表示写入到第2行第2列的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值