繁体   English   中英

如何根据另一列的日期条件获取熊猫数据框中特定列的值?

[英]How do I get the values of a particular column in a pandas dataframe based on a date condition on another column?

我有一个如下所示的数据框:

A  B   Start_Date
1  4   2003-05-22
2  6   2003-05-31
....
57 406 2018-09-08

我想获得从 Start_Date 开始几年或之后的值。 例如,我想知道 B 列的值,该值将在距相应值的 Start_Date 小于或等于 10 年的日期。 所以这看起来像这样:

A  B   Start_Date D
1  4   2003-05-22 <value of B on or before (last value before) 2013-05-22>
2  6   2003-05-31 <value of B on or before (last value before) 2013-05-31>
....
57 406 2018-09-08 <value of B on or before (last value before) 2028-09-08>

当我尝试这样的事情时('Start_Date plus 10' 只是在 Start_Date 列中添加了 10 年的另一列)

df['D']=df[df['Start Date']<=df['Start_Date plus 10']]['B'].max()

它只是给出了 B 列的最大值,这是可以理解的,但不是我的最终目标。 请帮忙提出这方面的建议。 请让我知道问题是否有歧义或是否需要进一步澄清。 感谢您花时间阅读本文并回答问题。

我不确定这是否正是您所需要的,如果它不起作用,请告诉我。 但是例如,如果您有一个 DataFrame,例如:

tempDF = pd.DataFrame({'dates': ['2003-05-20', 
                                 '2003-05-21', 
                                 '2003-05-22', 
                                 '2003-05-23', 
                                 '2003-05-24', 
                                 '2003-05-25']})

你定义你的日期,如:

   min_date = '2003-05-21'
   max_date = '2003-05-23'

你有不同的选择。 您可以使用 somehing 首先获取特定日期的所有条目,然后通过在特定日期过滤所有条目再次使用该子样本。

   filteredDF = tempDF[tempDF['dates']>=min_date][tempDF['dates'] <=max_date]

或者您可以使用“查询”功能(就像这里解释的那样

   filteredDF =tempDF.query('dates >= @min_date').query('dates <= @max_date')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM