潜川221 2022-01-26 11:31 采纳率: 50%
浏览 46
已结题

如何python实现excel某列基于其他各列条件求值?

简化点就是,有字段abcdef,我要创建一个g列,g列的值是,如果a是1,b为空,g等于c/e。如果a大于6,b是0,c为当天日期,g等于def乘积。这种判断应该用什么函数啊,找了一天没找到,求大佬帮助,谢谢

  • 写回答

3条回答 默认 最新

  • ENGineer_zlshuo 2022-01-30 01:06
    关注

    写的好像有点乱啊,如果没看明白,可以留言,或者私信我等我回复

    
    import pandas as pd
    import time
    
    st = time.localtime()  # 获得即时的时间(注意st是元组类型,不可改变)
    # 由于不知道你的日期是哪种类型,我拿以下三种类型为代表演示
    today1 = '{}-{:02d}-{}'.format(st[0], st[1], st[2])  # 日期为2022-01-30,为文本字符串类型
    today2 = '{}-{:02d}-{} 00:00:00'.format(st[0], st[1], st[2])  # 日期为2022/01/30,为excel默认的日期格式,此处经过特殊处理得到2022-01-30 00:00:00的格式
    today3 = '{}{:02d}{}'.format(st[0], st[1], st[2])  # 日期为20220130,在excel默认为数字类型
    
    df = pd.read_excel('test.xlsx', sheet_name='求和')  # 读取excel文件,读取对应的sheet,类型为DataFrame(可以理解为数据框)
    df['g'] = ''  # 新增g列,所有值为空
    for i in range(0, df.shape[0]):  # df.shape[0]是获取df的总行数,同理df.shape[1]是总列数
        # df.iloc[a, b]中, a是行,b是列,都从0开始计,因此第一行第一列为df.iloc[0, 0]
        if df.iloc[i, 0] == 1 and str(df.iloc[i, 1]) == 'nan':  # 注意,此处默认为等于数字1,若excel输入的是文本字符1,则改为 == ‘1’;同时,一般==‘nan’代表空值
            result = df.iloc[i, 2] / df.iloc[i, 0]
            df.iloc[i, 6] = result  # 将resul赋值给g列
        if df.iloc[i, 0] > 6 and df.iloc[i, 1] == 0 and df.iloc[i, 2] == str(today1):  # 日期为2022-01-30时,为文本字符串类型,采用str()
            result = df.iloc[i, 3] * df.iloc[i, 4] * df.iloc[i, 5]
            df.iloc[i, 6] = result
        if df.iloc[i, 0] > 6 and df.iloc[i, 1] == 0 and str(df.iloc[i, 2]) == str(today2):  # 日期为2022/01/30时,为excel默认的日期格式,特殊处理后,采用str()
            result = df.iloc[i, 3] * df.iloc[i, 4] * df.iloc[i, 5]
            df.iloc[i, 6] = result
        if df.iloc[i, 0] > 6 and df.iloc[i, 1] == 0 and df.iloc[i, 2] == int(today3):  # 日期为20220130,在excel默认为数字类型,采用int(),如果为文本,请采用str()
            result = df.iloc[i, 3] * df.iloc[i, 4] * df.iloc[i, 5]
            df.iloc[i, 6] = result
    
    df.to_excel('result.xlsx', index=False)  # 得到结果文件
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 1月26日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答