#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'