function - 将函数应用于整个数据框
问题描述
我正在尝试使用 if 语句重新编码数据框中的所有值。
我有:
a b c
0 .05 0
-.02 0 -.06
-.01 0 -.08
0 0 .09
我想:
a b c
0 1 0
0 0 -1
0 0 -1
0 0 1
我尝试了几件事,例如:
def unit_weighted (x):
if x >= 0.05:
return 1
elif x <= -0.05:
return -1
else:
return 0
new = df.apply(unit_weighted, axis=0)
我收到此错误:ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
我不想像这样列出所有列:
new = df['a'].apply(unit_weighted, axis=0)
new = df['b'].apply(unit_weighted, axis=0)
请问有什么帮助吗?
解决方案
只需删除axis=0
,它将按元素应用。
推荐阅读
- c - 使线性搜索更高效
- python - 如何获取标签编码器的映射
- c# - WPF 在整个窗口上捕获 DragOver,但只允许在特定区域放置
- c# - 如何返回异步方法的当前方法名称
- mysql - 通过使用 PASSPHRASE 启用 SSL 连接到 MySQL 时出错
- node.js - 为 HTTPS 设置超时的正确方法
- css - 将桌面图像渲染为移动 React JSX 的背景
- jsf - 使用 UIComponent 迁移 omnifaces 3.7.1 到 3.8.1 validateBean 后出错
- python - openpyxl 将工作表添加到工作簿
- kotlin - 如果调用标有 @Throws(IOException::class) 的方法,则调用不适当的阻塞方法