在 pandas 中应用函数的替代方法

Alternative to apply function in pandas

我想以更有效的方式执行这个简单的转换。

df["amount"] = df.apply(
    lambda row: 500 if row.amount > 500 else row.amount, axis=1
)

有什么想法吗?

您可以使用 pandas.Series.clip:

df["amount"].clip(upper = 500)

numpy.clip:

np.clip(df["amount"], None, 500)

您也可以使用 np.where 以获得最大速度

# assumes df['amount'] has no na, use .fillna(0) if needed
df["amount"] = np.where(df['amount'].values > 500, df['amount'].values, None)