首页 > 解决方案 > 在 pandas 数据框中创建一个新列,执行条件方程来判断值是正数还是负数

问题描述

我目前有一个熊猫的数据框,它由两列组成,“索引”和“价格”列,如下所示: 熊猫数据框

我需要创建一个名为“Log”的新列,我想根据“Price”列中的数据是负数还是正数来执行两个单独的操作。对于积极的行,我需要执行以下操作:

df["Log"] = 10**(df['Price'])

如果“价格”列中的数字为负数,请执行以下操作以获取该单元格的绝对值:

df["Log"] = -10**(df['Price'].abs())

您能否给我看一个 Python 代码,上面的操作可以在原始 pandas 数据帧上执行,最终结果应该如下所示:

最终预期的数据帧结构

我在下面包含了创建原始数据框的代码:

# Create dataframe 
cars = {'Index': [1,2,3,4,5,6,7,8,9,10], 
        'Price': [2.266021, 2.160644, -2.266021, 2.103899, 2.019323, 2.134563, 2.193423, 2.495643, 2.129344, 2.876545]
        }

df = pd.DataFrame(cars, columns = ['Index', 'Price'])

print (df)

标签: pythonpandas

解决方案


尝试np.where

import numpy as np 

df["Log"] = np.where(df.Price<0, -10**(df['Price'].abs()), 10**(df['Price']))

推荐阅读