将列值作为索引来取值

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)

参考:

https://stackoverflow.com/questions/17071871/how-do-i-select-rows-from-a-dataframe-based-on-column-values

posted @ 2022-07-11 09:13  C羽言  阅读(52)  评论(0)    收藏  举报