Python 在筛选的timeseries列中减去天数

Python 在筛选的timeseries列中减去天数,python,pandas,Python,Pandas,我有以下数据帧: date number 2016-01-20 1 2016-06-21 1 2012-05-6 1 我知道我想减去每个日期的10天,但仅限于那些小于2014年3月的日期。结果应该如下所示: date number 2016-01-10 1 2016-06-11 1 2012-05-6 我尝试了以下命令,但它根本不会更改列。有人知道我做错了什么吗 df[df[

我有以下数据帧:

date           number
2016-01-20       1
2016-06-21       1
2012-05-6        1
我知道我想减去每个日期的10天,但仅限于那些小于2014年3月的日期。结果应该如下所示:

date           number
2016-01-10       1
2016-06-11       1
2012-05-6        
我尝试了以下命令,但它根本不会更改列。有人知道我做错了什么吗

df[df["date"].isin(pd.date_range("2014-02-01", "2018-01-01"))]["date"] = df[df["date"].isin(pd.date_range("2014-02-01", "2018-01-01"))]["date"] - pd.Timedelta(10, "D")
如果我只是运行此命令:

df[df["date"].isin(pd.date_range("2014-02-01", "2018-01-01"))]["date"] - pd.Timedelta(10, "D")
它正确地给出了过滤后的数据帧的减分日期。但是,我不知道如何将这些映射回过滤后的原始日期列,以替换未减去的日期

您可以使用:

您可以使用:

df.date = df.date.where(df.date < '2014-03-01', df.date - pd.Timedelta(10, 'D'))
df
#         date  number
#0  2016-01-10  1
#1  2016-06-11  1
#2  2012-05-06  1
df.loc[df.date > '2014-03-01', 'date'] -= pd.Timedelta(10, 'D')

df
#         date  number
#0  2016-01-10       1
#1  2016-06-11       1
#2  2012-05-06       1