python - 在 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)
解决方案
尝试np.where
import numpy as np
df["Log"] = np.where(df.Price<0, -10**(df['Price'].abs()), 10**(df['Price']))