python pandas如何在数据帧列

时间:2018-02-05 19:28:38

标签: python pandas dataframe indexing

我有这个数据框,我想在特定列之前和之后选择10行。我已经达到了这一点,但我想知道如何在lambda python表达式中使它更优雅,因为我需要在循环上运行它一万次。

import pandas as pd

df = pd.DataFrame(data=np.random.rand(90),
     index=pd.date_range('2015-01-01','2015-03-31'),columns=['A'])

我已将此作为正在进行的解决方案达成:

之前和之后的10次观察:

df.loc['2015-01-17':].head(11)[1:11].transpose()   ! before
df.loc[:'2015-01-17'].tail(11)[0:10].transpose()   ! after

那么,我怎样才能让它成为一个带有lambda表达式的循环,并且不仅有一个index而且还有两个indexes

1 个答案:

答案 0 :(得分:3)

使用index.get_loc非常简单。获取标签的索引,并相应地切片。

idx = df.index.get_loc('2015-01-17')
df.iloc[idx - 10 : idx + 10]

                   A
2015-01-07  0.262086
2015-01-08  0.836742
2015-01-09  0.094763
2015-01-10  0.133500
2015-01-11  0.285372
2015-01-12  0.338112
2015-01-13  0.451852
2015-01-14  0.163001
2015-01-15  0.247186
2015-01-16  0.227053
2015-01-17  0.837647
2015-01-18  0.918334
2015-01-19  0.514731
2015-01-20  0.207688
2015-01-21  0.700314
2015-01-22  0.363784
2015-01-23  0.811346
2015-01-24  0.079030
2015-01-25  0.051900
2015-01-26  0.520310