Skip to main content
 首页 » 编程设计

python之选择以特定索引值开头的 Pandas 数据框中的行

2025年05月04日23落叶无声

假设我有一个数据框,其中的行按交易 天索引,所以类似于:

Date          ClosingPrice 
2017-3-16      10.00 
2017-3-17      10.13 
2017-3-20      10.19 
    ... 

我想找到以(比如说)2017-2-28 开头的 $N$ 行,所以我不知道日期范围,我只知道我想做十行以下的事情。这样做最优雅的方法是什么? (有很多丑陋的方式......)

请您参考如下方法:

我的快速回答

s = df.Date.searchsorted(pd.to_datetime('2017-2-28'))[0] 
df.iloc[s:s + 10] 

演示

df = pd.DataFrame(dict( 
        Date=pd.date_range('2017-01-31', periods=90, freq='B'), 
        ClosingPrice=np.random.rand(90) 
    )).iloc[:, ::-1] 
 
date = pd.to_datetime('2017-3-11') 
s = df.Date.searchsorted(date)[0] 
df.iloc[s:s + 10] 
 
         Date  ClosingPrice 
29 2017-03-13      0.737527 
30 2017-03-14      0.411525 
31 2017-03-15      0.794309 
32 2017-03-16      0.578911 
33 2017-03-17      0.747763 
34 2017-03-20      0.081113 
35 2017-03-21      0.000058 
36 2017-03-22      0.274022 
37 2017-03-23      0.367831 
38 2017-03-24      0.100930 

朴素时间测试