潜川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日

悬赏问题

  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活