Извлечение строк из кадра данных панд, соответствующего списку месяца-дня - PullRequest
0 голосов
/ 08 мая 2019

Об этом, должно быть, спрашивали раньше, но я не смог найти то, что искал, извиняюсь, если дублирую. У меня есть датафрейм df, где индекс в python datetime:

1982-01-01  [282.7945979191705, 279.12373352050776, 277.74...
1982-01-02  [279.12373352050776, 277.7481374216604, 278.21...
1982-01-03  [277.7481374216604, 278.21691274118945, 276.85...
1982-01-04  [278.21691274118945, 276.85932268415183, 273.1...
1982-01-05  [276.85932268415183, 273.12550555218706, 273.4...
...
2001-12-27  [277.50443007919813, 274.45894647954583, 274.6...
2001-12-28  [274.45894647954583, 274.6708258324927, 275.59...
2001-12-29  [274.6708258324927, 275.59033873840997, 274.35...
2001-12-30  [275.59033873840997, 274.3595948271699, 274.92...
2001-12-31  [274.3595948271699, 274.92645028921316, 283.02...

Теперь у меня есть список дней месяца dates Я бы хотел отфильтровать по:

Index(['01-08', '01-23', '02-07', '02-22', '03-09', '03-24', '04-08', '04-23',
       '05-08', '05-23', '06-07', '06-22', '07-07', '07-22', '08-06', '08-21',
       '09-05', '09-20', '10-05', '10-20', '11-04', '11-19', '12-04', '12-19'],
      dtype='object')

Как я могу извлечь все строки из кадра данных, соответствующие этим датам? Я пытался df.loc[dates], но это не работает.

Ответы [ 2 ]

3 голосов
/ 08 мая 2019

Использование strftime

yourdf=df[df.index.strftime('%m-%d').isin(dates)].copy()
0 голосов
/ 08 мая 2019

Ваш dates представляет собой серию объектов типа Pandas. Вы не можете сравнивать ряды даты и времени напрямую.

Вместо этого вы должны сначала использовать индекс вашего фрейма данных, чтобы создать новый столбец типа «объект», который содержит соответствующий месяц и день.

df['month-day'] = pd.DatetimeIndex(df.index).month.astype(str).str.zfill(2)  + "-" + pd.DatetimeIndex(df.index).day.astype(str).str.zfill(2) 

После этого вы можете использовать этот новый столбец month-day для фильтрации:

df[df["month-day"].isin(dates)]
...