Удалить дни из панд DatetimeIndex - PullRequest
0 голосов
/ 05 мая 2018

Я работаю с набором данных, который имеет информацию о дате и времени только для года-месяца как: 20110003 -> 2011-03. Чтобы сохранить формат 2011-03, я сделал следующее:

#change 20110003 -> 2011-03 
        indicator_ccgs_re=indicator_ccgs.loc[:,'Time period Sortable'].astype(str)
        old_pattern='00'
        new_pattern='-'
        new_dates=[]
        for i, v in indicator_ccgs_re.items():
            new_date = re.sub(old_pattern,new_pattern, v)
            new_dates=new_dates+[new_date]
        new_index=pd.to_datetime(new_dates,format='%Y%m%')
        values_period=indicator_ccgs.loc['2012-01':'2012-06','Value']
        type(new_index)

pandas.core.indexes.datetimes.DatetimeIndex

values_period.index

DatetimeIndex(['2012-01-01', '2012-02-01', '2012-03-01', '2012-04-01',
               '2012-05-01', '2012-06-01'],
              dtype='datetime64[ns]', freq=None)

Таким образом, день остается, хотя я указал формат = '% Y% m%'.

При построении графиков значения являются месячными, но в табличном виде все еще сохраняются дни в индексе.

Я пытался пересэмплировать

monthly=values_period.resample('M').sum()
monthly.index

Но остаются дни (только последний, а не первый день месяца):

DatetimeIndex(['2012-01-31', '2012-02-29', '2012-03-31', '2012-04-30',
               '2012-05-31', '2012-06-30'],
              dtype='datetime64[ns]', freq='M')

И пытается:

dt=new_index.strptime('%Y-%m')

Я получил AttributeError: у объекта «DatetimeIndex» нет атрибута «strptime»

Есть ли другое решение, чтобы восстановить день из индекса?

1 Ответ

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

Это должно помочь.

import pandas as pd
df = pd.DataFrame({"a": ["20110003"]})
df["b"] = pd.to_datetime(df["a"], format='%Y00%m').apply(lambda x: x.strftime('%Y-%m'))
print(df["b"])

Выход:

0    2011-03
Name: b, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...