如何在日期条件中提取行

时间:2017-01-31 03:44:50

标签: python pandas dataframe

我有以下数据框:

A  B 
a1 2016-10-24
b1 2016-11-25 
b2 2017-02-26
a2 2016-11-23
b2 2017-01-03
b3 2017-03-24

在第1步中,我提取以:

开头的行

df[df.A.str.startswith("a")]

A  B 
a1 2016-10-24
a2 2016-11-23

接下来,我想在步骤1中将提取行中接下来2个月中B列日期的行提取出来。

因此,在示例数据框中,我想提取列B从2016-10-242016-12-24,或从2016-11-232017-01-23的行。

因此,我会提取列B从2016-10-242017-01-23的行。

我想要的结果如下。

A  B 
a1 2016-10-24
b1 2016-11-25 
a2 2016-11-23
b2 2017-01-03

如何使用这些条件提取行?

1 个答案:

答案 0 :(得分:2)

我认为您可以先按条件选择B,然后将2个月添加到end_date日期,将start_date日期设为min,最后过滤boolean indexing

df1 = df.loc[df.A.str.startswith("a"), 'B']
print (df1)
0   2016-10-24
3   2016-11-23
Name: B, dtype: datetime64[ns]

end_date = df1.max() + pd.offsets.DateOffset(months=2)
start_date = df1.min()
print (start_date)
2016-10-24 00:00:00
print (end_date)
2017-01-23 00:00:00

print (df[(df.B >= start_date)&(df.B <= end_date)])
    A          B
0  a1 2016-10-24
1  b1 2016-11-25
3  a2 2016-11-23
4  b2 2017-01-03