Список периодов для сгруппированных дат и времени - PullRequest
0 голосов
/ 28 февраля 2019

Я очень новичок в пандах, и я хочу сделать следующее, но у меня есть некоторые проблемы с групповым.Пожалуйста, помогите.

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

df = pd.DataFrame(['02 Jan 2018', '02 Feb 2018', '02 Feb 2018', '02 Mar 2018'], columns=['date'])
datelist = pd.to_datetime(df.date)
datelist = datelist.groupby([datelist.dt.month, datelist.dt.year])

когда я получаю datelist.all(), я получаю следующее:

date  date
1     2018         True
2     2018         True
Name: date, dtype: bool

Мне нужно что-то вроде ['Jan 2018', 'Feb 2018']

Буду очень признателен за вашу помощь.

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать to_period (для серии это будет dt.to_period):

In [11]: datelist.to_period("M")
Out[11]:
PeriodIndex(['2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01',
             ...
             '2019-02', '2019-02', '2019-02', '2019-02', '2019-02'],
            dtype='period[M]', freq='M')

In [12]: datelist.to_period("M").unique()
Out[12]: PeriodIndex(['2019-01', '2019-02'], dtype='period[M]', freq='M')

In [13]: [str(m) for m in datelist.to_period("M").unique()]
Out[13]: ['2019-01', '2019-02']
0 голосов
/ 28 февраля 2019

Используйте to_datetime, затем преобразуйте в пользовательские строки со значениями strftime, получите значения unique и последнее преобразование в string с:

datelist = pd.to_datetime(df.date).dt.strftime('%b %Y').unique().tolist()
print (datelist)
['Jan 2018', 'Feb 2018', 'Mar 2018']

Другое решение, если входной формат даты и времени равен 02 Jan 2018, разделен по первому пробелу split, выберите второе значение и получите unique значения:

datelist = df['date'].str.split(n=1).str[1].unique().tolist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...