Как получить июльский месяц всех лет в годовом временном ряду? (Блокнот Jupyter) - PullRequest
0 голосов
/ 29 марта 2020

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

from pandas import read_csv

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import os

import cartopy

%matplotlib inline

df = pd.read_csv('SPI1_and_rr_for_200011.0.csv',header=0)

df

, и он читает это:

    time                   rr          spi
0   1985-01-16 00:00:00 42.200000   0.452561
1   1985-02-14 12:00:00 52.300000   1.383562
2   1985-03-16 00:00:00 21.900000   -0.562075
3   1985-04-15 12:00:00 35.600002   0.562016
4   1985-05-16 00:00:00 22.400000   -0.699583
... ... ... ...
403 2018-08-16 00:00:00 110.400000  1.094294
404 2018-09-15 12:00:00 74.400000   0.451431
405 2018-10-16 00:00:00 44.400000   -0.071395
406 2018-11-15 12:00:00 26.100000   -1.293115
407 2018-12-16 00:00:00 51.000000   0.792487

тогда я строю график и получаю это:

df.plot(y='spi',x='time')

enter image description here

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Убедитесь, что df['time'] относится к типу datetime, и используйте метод доступа dt для фильтрации по месяцам.

# Convert to datetime 
df['time'] = pd.to_datetime(df['time'])

# Filter by month number (July == 7)
july_df = df[df['time'].dt.month == 7]
0 голосов
/ 29 марта 2020

Было бы проще подтвердить, если вы создали некоторые образцы данных, которые я мог бы скопировать и вставить, но приведенные ниже могут помочь вам начать. Посмотрите groupby и pd.Grouper .

df.groupby(pd.Grouper(freq='M')).getgroup(7)

Возможно, вам придется преобразовать столбец даты и времени в pd.Timestamp , Я не уверен, в какой форме он находится.

Вы также можете увидеть более полный ответ здесь .

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