Как установить временную метку фрейма данных на первый день месяца

#python #pandas #database #dataframe #resampling

Вопрос:

У меня есть несколько фреймов данных, которые я пересчитываю, чтобы они соответствовали друг другу. Я хотел бы установить временные метки (индекс) для всех данных в первые дни месяца dsy, в котором были проведены измерения. Я нигде не могу найти, как это сделать, ближе всего я подошел к повторной выборке(период=…), но это оставляет меня без дня. Код, который я попробовал

 df['value'].resample('M',kind = 'period').sum() 
 

введите описание изображения здесь

Это выглядит примерно так, в то время как я бы хотел, чтобы метка времени имела форму 2018-09-01.

Ответ №1:

Эта строка-все, что вам нужно:

 df.index = pd.to_datetime(df.index).strftime('%Y-%m-%d')

# Output
#             value
# 2018-09-01     11
# 2018-10-01     12
 

Он преобразует ваш столбец индекса в столбец типа даты и времени. Автоматически вставляется первый день месяца. Более подробную информацию смотрите в документах.

Комментарии:

1. Я все еще получаю отметку времени как последний день месяца.. Я использую формат = ‘/%m/%Y’, но он тоже не работает..

2. Странно, но это работает на меня. Я изменил ответ, изменив формат даты. Не могли бы вы, пожалуйста, попробовать еще раз?

3. все равно все они либо 30-й день, либо 31-й… есть ли способ заставить число дня быть «1»?

4. Я не уверен, почему по умолчанию вы получаете последний день месяца. Если вы хотите заставить его, просто используйте df.index = df.index.strftime('%Y-%m') '-01'