根据另一个排序列表中的值索引创建新列

or_*_*aug 5 python dataframe pandas

我在熊猫中有一个数据框

val1 val2 val3 time 
 a    b    c    0       
 d    e    f    5
 g    h    i    7
 j    k    l    4
 c    a    q    9
 m    e    t    2
 g    n    y    1
 v    k    l    0
Run Code Online (Sandbox Code Playgroud)

timesteps = [0, 3, 8]

我想创建一个新列,该列是该元素的最大值timesteps小于row["time"] 该列的最大值。例如,在这里,新列为[0,3,3,3,8,0,0,0]

最好的方法是什么?

ank*_*_91 4

使用pd.cut()

timesteps = [0, 3, 8]
bins=timesteps+[df.time.max()]
#[0, 3, 8, 9]
pd.cut(df.time,bins=bins,labels=timesteps,include_lowest=True)
Run Code Online (Sandbox Code Playgroud)
0    0
1    3
2    3
3    3
4    8
5    0
6    0
7    0
Run Code Online (Sandbox Code Playgroud)