在日期大于其他日期的地方替换DateTime列值

时间:2019-06-07 14:09:44

标签: python pandas datetime

我正在尝试替换日期大于特定日期的特定列中的所有DateTime值。

df的示例如下所示。

date
2016-01-03
2016-01-03
2016-01-03
2016-01-02
2016-01-02
2016-01-02
2016-01-01
2016-01-01
2015-12-31
2015-12-31
2015-12-31

我希望所有大于2016-01-01的日期都显示为2016-01-01

我期望的预期输出如下所示。

date
2016-01-01
2016-01-01
2016-01-01
2016-01-01
2016-01-01
2016-01-01
2016-01-01
2016-01-01
2015-12-31
2015-12-31
2015-12-31

任何人都可以提供的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

Series.clip与日期时间一起使用-例如与Timestamp

#if necessary
#df['date'] = pd.to_datetime(df['date'])

df['date'] = df['date'].clip(upper=pd.Timestamp('2016-01-01'))
print (df)
         date
0  2016-01-01
1  2016-01-01
2  2016-01-01
3  2016-01-01
4  2016-01-01
5  2016-01-01
6  2016-01-01
7  2016-01-01
8  2015-12-31
9  2015-12-31
10 2015-12-31

答案 1 :(得分:2)

我将执行mask,只有clipmask之间的区别在于,当替换值与边界值相同时,clip更好,但是当有不同的替换价值面膜可以做得更好。

df.date.mask(df.date.gt('2016-01-01'),pd.Timestamp('2016-01-01'),inplace=True)
df
Out[397]: 
         date
0  2016-01-01
1  2016-01-01
2  2016-01-01
3  2016-01-01
4  2016-01-01
5  2016-01-01
6  2016-01-01
7  2016-01-01
8  2015-12-31
9  2015-12-31
10 2015-12-31