Skip to main content
 首页 » 编程设计

python之如何提取日期条件中的行

2024年10月01日16powertoolsteam

我有以下数据框:

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 步中,我提取以 a 开头的行:

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

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

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

所以在示例数据框中,我想提取 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 

如何提取具有这些条件的行?

请您参考如下方法:

我觉得可以先按条件选择B,然后在end_date日期加上2个月,得到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