Python函数不存在

2024-09-28 01:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了以下数据:

df = pd.DataFrame(columns=['mbs','Wholesale Data Usage'], index=['x','y','z'])
df.loc['x'] = pd.Series({'mbs':32, 'Wholesale Data Usage':36})
df.loc['y'] = pd.Series({'mbs':64, 'Wholesale Data Usage':62})
df.loc['z'] = pd.Series({'mbs':256, 'Wholesale Data Usage':277})

此外,我还定义了以下函数:

def calculate_costs(row):
    mbs = row.loc['mbs']
    wdu = row.loc['Wholesale Data Usage']

    ac = 0
    if wdu >= mbs:
        if mbs == 32 | mbs == 64:
            ac = (wdu - mbs) * 0.05
        elif mbs == 128 | mbs == 256:
            ac = (wdu - mbs) * 0.036
        elif mbs == 512 | mbs == 1024:
            ac = (wdu - mbs) * 0.018

    return ac

出于某种原因,如果我将函数应用于我的df,所有行值都是0:

df['Additional Charge'] = df.apply(lambda r: calculate_costs(r), axis=1)

你能告诉我我做错了什么吗


Tags: 函数dfdataifusagelocacrow
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:57

我不确定这是否是你想要的,结果现在不是零(我把|符号改成了“或”)

def calculate_costs(row):
    mbs = row.loc['mbs']
    wdu = row.loc['Wholesale Data Usage']
    print(mbs,wdu)
    ac = 0
    if wdu >= mbs:
        print("Hej")
        if mbs == 32 or mbs == 64:
            ac = (wdu - mbs) * 0.05
        elif mbs == 128 or mbs == 256:
            ac = (wdu - mbs) * 0.036
        elif mbs == 512 or mbs == 1024:
            ac = (wdu - mbs) * 0.018
        else:
            print ("Hello")
    return ac

相关问题 更多 >

    热门问题