python - 根据条件为 pandas df 列分配三个值

标签 python pandas dataframe

我有一个 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/

相关文章:

python - 从 pandas Dataframe 中提取在特定列中具有特定值的所有行

python - Django 干草堆测试

python - 将许多 python pandas 数据框放到一个 excel 工作表中

python - 将许多 json 字符串与 python pandas 输入合并

python - Groupby 中的项目计数

python - 如何在多索引数据框 Python 中添加/删除索引

python - 将 dask 列转换为日期并应用 lambda 函数

python - 在 python 中将输出捕获为 tty

python - 使用 pysnmp 获取单个 SNMP 值

r - 如何使用 R data.table 比较列之间的多个字符串长度?