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