我正在寻找一种更有效的方法来限制 pandas 系列的值。
在下面的示例中,每个小于 5 的值都是 替换为 5,每个更高的值将替换为 25
import pandas as pd
df = pd.DataFrame({'value': list(range(30))})
df['value'].apply(lambda x: 5 if x < 5 else 25 if x > 25 else x)
是否有内置的 pandas 或 numpy 做同样的事情?
请您参考如下方法:
使用numpy.select或 Series.clip :
m1 = df['value'] < 5
m2 = df['value'] > 25
df['Status'] = np.select([m1, m2], [5,25], df['value'])
或者:
df['Status'] = df['value'].clip(5, 25)
