Замените значение столбца DateTime, где дата больше, чем другая дата - PullRequest
2 голосов
/ 07 июня 2019

Я пытаюсь заменить все значения 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 ]

3 голосов
/ 07 июня 2019

Используйте 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
2 голосов
/ 07 июня 2019

Я сделаю mask, здесь только по-разному между clip и mask, когда значение замены такое же, как граничное значение, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...