我有一个 pandas df,其中包含一列正数、负数和零。我想创建另一列,如果 no > 0,则为 1;如果 no < 0,则为 -1;如果数字为 0,则为 0。
我尝试对每一行使用 for 循环来执行此操作,但花费的时间太长。我想知道是否有更快的方法来做到这一点。我还想知道是否可以将相同的逻辑扩展到正和负 timedelta 对象。
谢谢。
我的最终 df 应该如下所示:
df = pd.DataFrame({'a':[1, 2, -1, 0, -2], 'b':[1, 1, -1, 0, -1]})
a b
0 1 1
1 2 1
2 -1 -1
3 0 0
4 -2 -1
其中 b 是根据 a 的值分配的列
最佳答案
这是一种方法numpy
sign
np.sign(df.a)
Out[118]:
0 1
1 1
2 -1
3 0
4 -1
Name: a, dtype: int64
df['b'] = np.sign(df.a)
关于python - 根据条件为 pandas df 列分配三个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57329529/