有几种选择。
熊猫通过pd.cut
/ NumPy通过np.digitize
NumPy通过 np.select
df = pd.Dataframe(data=np.random.randint(1,10,10), columns=['a'])criteria = [df['a'].between(1, 3), df['a'].between(4, 7), df['a'].between(8, 10)]values = [1, 2, 3]df['b'] = np.select(criteria, values, 0)
的元素
criteria是布尔级数,因此对于值 列表 ,可以使用
df['a'].isin([1, 3]),等等。
通过字典映射 range
d = {range(1, 4): 1, range(4, 8): 2, range(8, 11): 3}df['c'] = df['a'].apply(lambda x: next((v for k, v in d.items() if x in k), 0))print(df) a b c0 1 1 11 7 2 22 5 2 23 1 1 14 3 1 15 5 2 26 4 2 27 4 2 28 9 3 39 3 1 1


