在正/负值上拆分列?

Ged*_*kas 1 python pandas

所以我遇到了另一个烦人的问题,这是我学习 Python 第一步的另一个障碍。

我有一个结果列,它有正/负/零值(赢、输、无承诺)。我想根据符号分为赢/输,零也将填充零,并在新的奖金列中填充负行;zeroes 将在新的损失列中填充零和正行。

数据。

g=pd.DataFrame({'OUTCOME':[100,-100,400,-200,-200,-750,-250,1000,0,100,-100]},index=[1,1,2,2,2,3,3,3,4,4,4])
Run Code Online (Sandbox Code Playgroud)

期望的输出。

g['WINNINGS']=[100,0,400,0,0,0,0,1000,0,100,0]
g['LOSS']=[0,100,0,200,200,750,250,0,0,0,100]
Run Code Online (Sandbox Code Playgroud)

Bat*_*man 5

有不止一种方法可以做到这一点,但基本上你想要做的是应用一个函数,如果数字小于或等于零,则返回 0,否则返回输入数字。然后对损失做相反的事情。一种方法是:

def winnings(value):
    return max(value, 0)

def losses(value):
    return min(value, 0)

df["winnings"] = df["outcome"].map(winnings)
df["loss"] = = df["outcome"].map(losses)
Run Code Online (Sandbox Code Playgroud)