Pandas Dataframe:如何按索引选择行,然后获取接下来的几行

时间:2018-02-21 17:02:52

标签: python pandas dataframe

在pandas中,我有一个按时间戳索引的Dataframe。如下表所示:

                 A      B     C     D  
DATE                                                             
2018-01-17        157.52        163.74       157.28         159.84   
2018-01-16        158.25        159.35       155.93         157.40   
2018-01-15        157.15        159.59       156.79         158.86   
2018-01-12        158.25        158.62       157.40         157.52  

我尝试按索引选择一行,并选择接下来的几行。 (例如,选择两行从2018-01-12开始)。我发现.loc和.iloc都很难完成这样的任务。有没有其他方法可以做到这一点?

4 个答案:

答案 0 :(得分:4)

解决方案#1 :使用DataFrame的索引,然后是head(2)

df['2018-01-12':].head(2)

解决方案#2 :使用iloc

i = df.index.get_loc('2018-01-12')
df.iloc[i:i+2]

奖金解决方案#3 :您似乎正在分析库存数据。也许您对使用滚动窗口可以更有效地完成的事情感兴趣? (移动平均线可能?)考虑使用rolling,例如计算滚动平均值:

df.rolling(2).mean()

答案 1 :(得分:2)

您应该可以执行以下操作:

date_of_wanted_row = "2018-01-12"
iloc_of_wanted_row = df.index.get_loc(date_of_wanted_row)
return df.iloc[iloc_of_wanted_row: iloc_of_wanted_row + 4]

(但是更明智的变量名称,我假设索引中的日期不是真正的字符串)

答案 2 :(得分:0)

另一种方法,使用numpy.r_

loc = df.index.get_loc(row)
print(df.loc[np.r_[loc:loc+2], :])

答案 3 :(得分:0)

您可以使用(获取日期之间的值):

df.loc['2018-01-12':'2018-01-14']

或者,获取一月份的所有数据:

df.loc['2018-01']