manera fácil de quitar ciertas observaciones (series de tiempo) en la trama de datos pandas?

whj123:

Tengo apandas trama de datos donde hay una columna llamada "fecha", que está en el formato de YYQQ, por ejemplo, 1702.

La columna es una serie de tiempo. Sin embargo, hay algunas observaciones que faltan. Por ejemplo, a continuación se interrumpe la trama de datos a la fecha de 1702. Tengo varias tramas de datos de este tipo y cada interrumpido en diferentes fechas. Yo sólo quiero conseguir la fecha después de la interrupción. En el ejemplo de abajo, yo sólo quiero filas en y después del 1702. ¿Hay una manera fácil y Pythonic para hacerlo?

date
1301
1302
1303
1304
1401
1702
1703
1704
1801
1802
rahlf23:

En primer lugar, vamos a volver a crear la trama de datos y crear nuevas columnas para representar el año ( YY) y cuarto ( QQ) para cada fecha respectiva:

import pandas as pd

df = pd.DataFrame({'date': [1301,1302,1303,1304,1401,1702,1703,1704,1801,1802]})

df[['YY','QQ']] = df['date'].astype(str).str.extract(r'(\d{2})(\d{2})')

Ahora tenemos:

   date  YY  QQ
0  1301  13  01
1  1302  13  02
2  1303  13  03
3  1304  13  04
4  1401  14  01
5  1702  17  02
6  1703  17  03
7  1704  17  04
8  1801  18  01
9  1802  18  02

Vamos a convertir cada trimestre con un mes de ese trimestre y entonces pueden reconvertir en una datetimeserie y encontrar la primera diferencia de tiempo que excede 3 meses. Finalmente, podemos cortar la trama de datos de acuerdo con el primer índice que satisface esta máscara booleana (es decir, la interrupción):

df['MM'] = df['QQ'].astype(int)*3

df['date_t'] = pd.to_datetime(df['YY'].astype(str)+df['MM'].astype(str), format='%y%m')

df.iloc[df[df['date_t'].diff().astype('timedelta64[M]')>3].index[0]:]

Los rendimientos:

   date  YY  QQ  MM     date_t
5  1702  17  02   6 2017-06-01
6  1703  17  03   9 2017-09-01
7  1704  17  04  12 2017-12-01
8  1801  18  01   3 2018-03-01
9  1802  18  02   6 2018-06-01

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=294106&siteId=1
Recomendado
Clasificación