необходимо сделать строковую переменную, которая имеет комбинацию года и недели в формате datetime - PullRequest
0 голосов
/ 15 мая 2018
period 

201801

201801

201801

201801

201801

это строка с первой четырьмя цифрами года, а последние две цифры недели, мне нужно преобразовать в формат даты и времени год и неделю и сделать эту переменную индексом

она пробовала df1['period'] = pd.to_datetime(df1['period'],format='%Y%U')

не работает

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете попробовать это.

sdf = pd.DataFrame(['201801','201801','201801','201802','201803'])
sdf['year'] = sdf[0].str[0:4]
sdf['week'] = sdf[0].str[5:7]
sdf['week'] = pd.to_numeric(sdf['week'])
df = pd.DataFrame({'year':sdf['year'], 'week':sdf['week']})
df

enter image description here

0 голосов
/ 15 мая 2018

Может быть, вам нужен также день недели. Вы можете попробовать следующим образом:

from datetime import datetime
df1 = pd.DataFrame([['201710', 2], ['201715', 3], ['201720', 4]], columns = ['period' ,'val'])
#Add Sunday as day of the week    
df1['period'] = df1['period'].astype(str) + '0'
df1['period'] = df1['period'].apply(lambda x: datetime.strptime(x, "%Y%W%w"))
df1.set_index('period', inplace=True)
print (df1)

Выход:

             val
date           
2017-03-12    2
2017-04-16    3
2017-05-21    4

Или:

df1['period'] = df1['period'].astype(str) + '0'     
df1['period'] = pd.to_datetime(df1['period'], format='%Y%W%w')
df1.set_index('period', inplace=True)

И он имеет тот же вывод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...