[英]How to create a new column based on Date Values & Condition in Pandas dataframe
[英]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.