Pandas 将正数转换为1,将负数转换为-1

8

我有一列正数和负数。如何将这一列转换为一个新的列,使正数转换为1,负数转换为-1?


如果是 0,会发生什么? - jezrael
np.sign() 将会起作用。 - xxyao
1
已在https://dev59.com/8loU5IYBdhLWcg3wg3Ko上回答。 - Zero
3个回答

16
你需要 numpy.sign
df['new'] = np.sign(df['col'])

样例:

df = pd.DataFrame({ 'col':[-1,3,-5,7,1,0]})
df['new'] = np.sign(df['col'])
print (df)

   col  new
0   -1   -1
1    3    1
2   -5   -1
3    7    1
4    1    1
5    0    0

4

使用以下步骤可轻松完成此任务 -

对于整个数据框 -

df[df < 0] = -1
df[df > 0] = 1

对于特定的列 -

df['column_name'][df['column_name'] < 0] = -1
df['column_name'][df['column_name'] > 0] = 1

1
双重索引可能会导致“SettingWithCopyWarning”,不是吗?使用.loc似乎更好,例如df.loc[df['column_name'] < 0, 'column_name'] = -1 - wjandrea

3
df[df < 0] = -1
df[df > 0] = 1

df == 0 没有定义任何行为。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接