首页 > 解决方案 > 将函数应用于整个数据框

问题描述

我正在尝试使用 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)

请问有什么帮助吗?

标签: functiondataframerow

解决方案


只需删除axis=0,它将按元素应用。


推荐阅读