将列值作为索引来取值
input
import pandas as pd
import numpy as np
d={'trade_date':['2021-08-10','2021-08-11','2021-08-12','2021-08-13','2021-08-14','2021-08-15','2021-08-16','2021-08-17','2021-08-18','2021-08-19','2021-08-20',],'price':[2,12,8,10,11,18,7,19,9,8,12],'cond':[True,False,True,False,True,False,True,False,True,True,True]}
df = pd.DataFrame(d)
df.index=pd.to_datetime(df.trade_date)
df['A']=df.index.where(df['cond'])
df['A']=df['A'].ffill()
df.to_clipboard()
df
方法一
df['expected'] = df['A'].map(df['price'])
#182 µs ± 1.32 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
方法二
df['expected'] =df['price'].where(df.index==df['A']).ffill()
#336 µs ± 7.37 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
方法三
df['expected'] =df['price'].loc[df.index ==df['A']]
df['expected'] =df['ab'] .ffill()
#355 µs ± 5.49 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
参考: