Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用日期时间比较的布尔结果在DataFrame中添加列?_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

Python 如何使用日期时间比较的布尔结果在DataFrame中添加列?

Python 如何使用日期时间比较的布尔结果在DataFrame中添加列?,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,如何在包含以下日期比较结果(布尔值)的Pandas数据框中创建额外的列 records['old'] = TRUE if records['date'] is older than 180 days records['old'] = FALSE if records['date'] is not older than 180 days 代码 today = datetime.now() records['old'] = records[abs(today - pd.to_datetime(re

如何在包含以下日期比较结果(布尔值)的Pandas数据框中创建额外的列

records['old'] = TRUE if records['date'] is older than 180 days
records['old'] = FALSE if records['date'] is not older than 180 days
代码

today = datetime.now()
records['old'] = records[abs(today - pd.to_datetime(records['date'])) > 180]
输出

TypeError:类型比较无效


我认为您需要
pd.Timedelta
或:

或:

样本:

rng = pd.date_range('2017-12-30', periods=10)
records = pd.DataFrame({'date': rng, 'a': range(10)})  

today = pd.datetime.now()
records['old'] = abs(today - pd.to_datetime(records['date'])) > pd.Timedelta(5, unit='d')
print (records)
   a       date    old
0  0 2017-12-30   True
1  1 2017-12-31   True
2  2 2018-01-01   True
3  3 2018-01-02   True
4  4 2018-01-03   True
5  5 2018-01-04   True
6  6 2018-01-05   True
7  7 2018-01-06  False
8  8 2018-01-07  False
9  9 2018-01-08  False
records['old'] = abs(today - pd.to_datetime(records['date'])).dt.days > 180
rng = pd.date_range('2017-12-30', periods=10)
records = pd.DataFrame({'date': rng, 'a': range(10)})  

today = pd.datetime.now()
records['old'] = abs(today - pd.to_datetime(records['date'])) > pd.Timedelta(5, unit='d')
print (records)
   a       date    old
0  0 2017-12-30   True
1  1 2017-12-31   True
2  2 2018-01-01   True
3  3 2018-01-02   True
4  4 2018-01-03   True
5  5 2018-01-04   True
6  6 2018-01-05   True
7  7 2018-01-06  False
8  8 2018-01-07  False
9  9 2018-01-08  False