Как конвертировать номер месяца в datetime в pandas - PullRequest
1 голос
/ 10 марта 2020

Я следовал инструкциям из этой темы, но столкнулся с проблемами.

Преобразование номера месяца в дату и время в pandas

Я думаю, что это может иметь делать с наличием дополнительной переменной в моем фрейме данных, но я не уверен. Вот мой фрейм данных:

0 Month Temp
1 0     2
2 1     4
3 2     3

Что я хочу:

0 Month    Temp
1 1990-01  2
2 1990-02  4
3 1990-03  3

Вот что я пробовал:

df= pd.to_datetime('1990-' + df.Month.astype(int).astype(str) + '-1', format = '%Y-%m')

И я получаю эту ошибку:

ValueError: данные времени 1990-0-1 не соответствуют указанному формату

Ответы [ 3 ]

0 голосов
/ 10 марта 2020

Вот мое решение для вас

import pandas as pd
Data = {
    'Month' : [1,2,3],
    'Temp' : [2,4,3]
}
data = pd.DataFrame(Data) 
data['Month']= pd.to_datetime('1990-' + data.Month.astype(int).astype(str) + '-1', format = '%Y-%m').dt.to_period('M')



    Month    Temp
0   1990-01   2
1   1990-02   4 
2   1990-03   3

Если вы хотите, чтобы Месяц [0] означал 1, тогда вы можете условно добавить это

0 голосов
/ 10 марта 2020

Попробуйте .dt.strftime (), чтобы показать, как отображать дату, потому что значения даты и времени по умолчанию хранятся в формате% Y-% m-% d 00:00:00.

import pandas as pd

df= pd.DataFrame({'month':[1,2,3]})

df['date']=pd.to_datetime(df['month'], format="%m").dt.strftime('%Y-%m')

print(df)

Вы должны явно указать pandas, чтобы добавить 1 к месяцам, поскольку они находятся в диапазоне 0-11, а не 1-12 в вашем случае.

df=pd.DataFrame({'month':[11,1,2,3,0]})
df['date']=pd.to_datetime(df['month']+1, format='%m').dt.strftime('1990-%m')
0 голосов
/ 10 марта 2020

IIU C, мы можем вручную создать ваш объект даты и времени, а затем отформатировать его как ожидаемый результат:

m = np.where(df['Month'].eq(0), 
             df['Month'].add(1), df['Month']
).astype(int).astype(str)


df['date'] = pd.to_datetime(
        "1900" + "-" + pd.Series(m), format="%Y-%m"
    ).dt.strftime("%Y-%m")

print(df)

   Month  Temp     date
0      0     2  1900-01
1      1     4  1900-02
2      2     3  1900-03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...