小白一一 2022-03-01 14:54 采纳率: 75%
浏览 59
已结题

用python实现在表中当金额大于零时某一id首次出现的次数标记为1否则为0

img

在不改变数据顺序的情况下,输出值(<0)和其对应同一id的前一条输入值需要的结果相同

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-03-02 01:29
    关注

    用字典记录下【ID和输入输出列的大小(1/0)标记】作为键名称,然后遍历时判断字典存在记录设置为0
    不过负数没看出来题主怎么搞法?比如105191这个id。

    img

    如果是id一样,值大于0或者小于0的第一条记录标记为1,其他标记为0用下面的

    img

    from openpyxl import load_workbook
    wb = load_workbook('test.xlsx')
    sheet1=wb["Sheet1"]
    kv={}
    for i in  range(2,sheet1.max_row+1):
        id=sheet1.cell(i,1).value
        value=sheet1.cell(i,2).value
        suffix="1"
        if value<0:
            suffix="0"
        key=str(id)+"-"+suffix
        if key in kv:
            sheet1.cell(i,3).value=0
        else:
            sheet1.cell(i,3).value=1
            kv[key]=1
    
    wb.save("test.xlsx")
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    小白一一 2022-03-02 13:02

    id相同的情况下,负数和其上一条正数返回的结果相同

    回复
    小白一一 回复 CSDN专家-showbo 2022-03-02 13:32

    出现负数的话前面一定有对应的正数,同一id第一条数据对应值一定大于0

    回复
    CSDN专家-showbo 回复 小白一一 2022-03-02 13:36

    用这个

    from openpyxl import load_workbook
    wb = load_workbook('test.xlsx')
    sheet1=wb["Sheet1"]
    kv={}
    for i in  range(2,sheet1.max_row+1):
        id=sheet1.cell(row=i,column=1).value
        value=sheet1.cell(row=i,column=2).value
        key=str(id)
        if key in kv:
            if value<0:
                sheet1.cell(row=i,column=3).value=kv[key]#负值设置为上一条正值的键值
            else:
                sheet1.cell(row=i,column=3).value=0
                kv[key]=0
        else:
            if value<0:#id第一条记录是负值,题主自己整单元格要设置成什么值
                #sheet1.cell(row=i,column=3).value=1#
                pass
            else:
                sheet1.cell(row=i,column=3).value=1
                kv[key]=1
            
     
    wb.save("test.xlsx")
     
    
    

    回复
    展开全部5条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月2日
  • 创建了问题 3月1日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部