我有一个充满浮点数(正数和负数)和一些 NaN 的 DataFrame。我想用它的符号替换每个浮点数:
- 如果它是 NaN -> 它仍然是 Nan
- 如果为正 -> 替换为 1
- 如果为负 -> 替换为 -1
- 如果为零 -> 保留为 0
有什么建议可以进行这种大规模更换吗?
原文由 vsoler 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个充满浮点数(正数和负数)和一些 NaN 的 DataFrame。我想用它的符号替换每个浮点数:
有什么建议可以进行这种大规模更换吗?
原文由 vsoler 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 np.sign
:
df
Out[100]:
A
0 -4.0
1 2.0
2 NaN
3 0.0
import numpy as np
np.sign(df["A"])
Out[101]:
0 -1.0
1 1.0
2 NaN
3 0.0
Name: A, dtype: float64
为了应用于所有列,您可以直接传递数据框:
df
Out[121]:
0 1 2 3
0 -2.932447 -1.686652 NaN -0.908441
1 1.254436 0.000000 0.072242 0.796944
2 2.626737 0.169639 -1.457195 1.169238
3 0.000000 -1.174251 0.660111 1.115518
4 -1.998091 -0.125095 0.000000 -0.506782
np.sign(df)
Out[122]:
0 1 2 3
0 -1.0 -1.0 NaN -1.0
1 1.0 0.0 1.0 1.0
2 1.0 1.0 -1.0 1.0
3 0.0 -1.0 1.0 1.0
4 -1.0 -1.0 0.0 -1.0
原文由 ayhan 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答894 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
您可以使用
boolean indexing
: