首页 > 解决方案 > 根据另一列设置新列,3 个选项

问题描述

我尝试解决 Python Pandas 中一个令人尴尬的问题。我想添加一个新列,并根据另一列获取新值。

signal  nom
0       value is 0
1       value is outcome of some calculations
-1      value is outcome of some other calculations

我想过使用 np.where - 但我相信这只能使用 2 个不同的结果(我有 3 个)。

我尝试使用顺序方法,首先检查 col1 是否存在“1”并基于此设置 newcol。然后检查 col1 是否为“-1”,并根据此输入值。但这会覆盖。

我尝试用一​​行设置新的 col,但这会给出 True/False 输出。

df['nom'] = (df.signal[df.signal ==1] * -10000) | (df.signal[df.signal ==-1] *30)

标签: python-3.xpandasnumpy

解决方案


用于numpy.select按条件标量和按列多重signal

m1 = df.signal == 1
m2 = df.signal == -1
df['nom'] = np.select([m1, m2], [-10000, 30], 0) * df.signal

推荐阅读