在 lambda 函数中使用三元语句

Using ternary statement in a lambda function

我一直在尝试使用 lambda 函数对 DataFrame 的向量进行舍入。在我的向量中我也有字符串值,所以我尝试了这个代码:

dff.apply(lambda x: round(x, 2) if (isinstance(x,float)))

但是它引发了 SyntaxError。

Python 中的三元语句要求条件后 else

dff.apply(lambda x: round(x, 2) if (isinstance(x,float)) else x)

这里有两个问题:

  1. tenary if-else 缺少 else 语句。喜欢 user17242583 的回答。
  2. dff.apply 逐列摘要,因此 isinstance(x,float) 不适用于四舍五入。请改用矢量化 numpy.round
dff.apply( lambda x: np.round(x,2))