假设 df 是一个完全由 float 组成的 Pandas 数据框。
我知道
df[df < 0] = 0
用零替换df
中的所有负值,但我问的是不同的东西。我想知道我必须在表达式中使用什么函数f
df.apply(f)
...使得生成的数据帧在 df
具有负数的位置处具有零。
FWIW,以下失败并出现错误:
df.apply(lambda x: max(x, 0))
...以下结果产生了错误的结果:
df.apply(lambda x: numpy.max(x, 0))
更一般地说,如何将非向量化标量返回函数应用于数据帧A的每个单元格,从而产生与 A 形状相同的新数据框?
最佳答案
这需要 applymap ,不适用:
df = pd.DataFrame(np.random.randn(4, 2))
df
Out:
0 1
0 1.157994 -0.729533
1 -1.062847 1.119744
2 -0.424534 -0.058468
3 0.465355 -0.838637
df.applymap(lambda x: max(x, 0))
Out:
0 1
0 1.157994 0.000000
1 0.000000 1.119744
2 0.000000 0.000000
3 0.465355 0.000000
关于python - 对于什么函数 f df.apply(f) 将所有负值转换为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381225/