Выберите строки для определенного месяца в Пандах - PullRequest
0 голосов
/ 10 мая 2018

У меня есть дата-фрейм с 12-часовыми данными за 10 лет. Все данные хранятся с указанием даты. Я хотел бы извлечь столбцы, содержащие данные за определенный месяц (обратите внимание, что месяц не в стандартном формате 1, 2, 3). Строки столбца «дата», которые у меня есть, выглядят так:

01-May-07
02-May-07
.
.
.
31-Oct-17

Как выбрать только столбцы, содержащие данные только за май, июнь и т. Д.

Изначально я думал, что могу извлечь, используя df[df['DATE'].str.contains('May')]. Но это не сработало, как ожидалось, что привело к выводу в качестве ввода.

Редактировать 1

DATE    TIME    MOONPH  SPEED   GUST    CLOUD AMOUNT    DRY WET DEW RH
01-May-07   230 NM7 6   0   4   27.4    25.4    25.4    86
01-May-07   330 NM7 4   0   4   27.4    25.4    25.4    86
01-May-07   430 NM7 3   0   4   27.4    25.4    25.4    86
01-May-07   530 NM7 2   0   4   27.4    25.4    25.4    89
01-May-07   630 NM7 3   0   5   27.4    26  25.4    85
01-May-07   700 NM7 0   0   4   27.8    26  25.4    81
01-May-07   730 NM7 0   0   4   27.8    26  25.4    81
01-May-07   800 NM7 2   0   4   27.8    26  25.4    81
01-May-07   830 NM7 5   0   4   29.2    26  24.6    76
01-May-07   900 NM7 5   0   4   29.2    26  24.6    76
01-May-07   930 NM7 5   0   2   29.8    26  24.6    76
01-May-07   1000    NM7 5   0   4   30.8    26  24.6    76
01-May-07   1030    NM7 5   0   4   30.8    26  24.6    76
01-May-07   1100    NM7 6   0   4   31.4    26  24.6    68
.
.
.
01-May-17   1630    NM7 8   0   5   32.6    27.4    25.6    68
01-May-17   1930    NM7 8   0   5   32  27.4    25.6    69
01-May-17   430 NM7 0   0   5   27.2    25  24  83
01-May-17   30  NM7 0   0   5   29.6    27.2    26.2    82
01-May-17   530 NM7 0   0   5   26.6    24.4    23.4    83
01-May-17   130 NM7 0   0   5   28  25.6    24.6    82
01-May-17   630 NM7 0   0   5   26.8    24.4    23.3    81
01-May-17   730 NM7 0   0   5   27.2    24.4    23.4    80
01-May-17   330 NM7 0   0   5   27.2    25  24  83
01-May-17   1230    NM7 10  0   5   32.8    28.2    25.2    64
01-May-17   2330    NM7 4   0   4   30  26.4    24.9    75
01-May-17   2230    NM7 5   0   4   30  26.8    25.5    77
01-May-17   2130    NM7 4   0   4   30  26.8    25.5    77
01-May-17   830 NM7 2   0   5   27.2    24.4    23.4    78
01-May-17   930 NM7 3   0   5   31.2    27.2    25.6    72
01-May-17   1830    NM7 8   0   5   32  27.4    25.6    69
01-May-17   1130    NM7 6   0   5   32.8    28.2    25.2    64
01-May-17   2030    NM7 6   0   4   32  26.8    25.4    76
01-May-17   1330    NM7 10  0   5   33  27.6    25.4    64
01-May-17   1430    NM7 10  0   5   33  27.6    25.2    65

1 Ответ

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

Я думаю, нужно преобразовать to_datetime, а затем сравнить с month или strftime и %B для month names

df = pd.DataFrame({'DATE': ['01-May-07', '02-May-07', '31-Oct-17']})
print (df)
        DATE
0  01-May-07
1  02-May-07
2  31-Oct-17

df = df[pd.to_datetime(df['DATE']).dt.month == 5]
df = df[pd.to_datetime(df['DATE']).dt.strftime('%B') == 'May']

print (df)
        DATE
0  01-May-07
1  02-May-07

Если вам нужно работать с датами позже:

df['DATE'] = pd.to_datetime(df['DATE'])
df = df[df['DATE'].dt.month == 5]
#df = df[df['DATE'].dt.strftime('%B') == 'May']
print (df)
        DATE
0 2007-05-01
1 2007-05-02

EDIT:

Если вам не нужно работать с datetimes, для меня с вашими данными ваш подход работает:

df = df[df['DATE'].str.contains('May')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...