首页 > 解决方案 > 我尝试使用函数将所有 0 值替换为损益

问题描述

def p_l(cols):
    cost_price = cols[0]
    selling_price = cols[1]
    
    if np.zeros('profit_or_loss'):
    
        if(cost_price<selling_price):
            return 'profit'
    
        else:
            return 'loss'
    else:
        return profit_or_loss


df['profit_or_loss']=df[['cost_price','selling_price']].apply(p_l,axis=1)

TypeError: ("'str' 对象不能解释为整数", '发生在索引 0')

标签: pandasnumpydataframedata-science

解决方案


如果我理解正确,“profit_or_loss”列被初始化为零。

目标是创建一个计算损益(并替换零)的函数。

# create data frame
df = pd.DataFrame({'cost_price': [1, 3, 6, 8, 9],
                   'sell_price': [2, 4, 5, 7, 9],
                   'profit_or_loss': [0, 0, 0, 0, 0],
                  }).assign(change = lambda x: x['sell_price'] - x['cost_price'])

def profit_loss(sell, cost):
    return (sell >= cost).map({True: 'profit', False: 'loss'})

# compute P&L
df['profit_or_loss'] = profit_loss(df['sell_price'], df['cost_price'])

df

对于大数据帧,使用起来会比较慢.apply(..., axis=1)。定义在标量和向量/序列上运行的函数要快得多。(但并不总是可能的。)


推荐阅读