Aquí está el trato
Estoy recuperando datos de una colección de MongoDB no coherente, por lo que quiero eliminar filas donde el índice no es un tipo de fecha y hora .
P.ej. eliminando las primeras 5 filas de este DataFrame:
_id id ... open connected
updated ...
Timestamp(0, 1610620202) 60001de14ed34a02743c4547 27 ... 1 1
1610620382 60001de14ed34a02743c4548 5 ... 1 1
1610620202 60001de14ed34a02743c4549 24 ... 1 1
1610620382 60001de14ed34a02743c454a 17 ... 1 1
1610620201 60001de14ed34a02743c454b 1 ... 1 1
... ... .. ... ... ...
2021-01-14 20:12:01 6000a60cc299a51c09e20626 19 ... 1 1
2021-01-14 20:12:01 6000a60cc299a51c09e20627 21 ... 1 1
2021-01-14 20:12:01 6000a60cc299a51c09e20628 11 ... 1 1
2021-01-14 20:12:01 6000a60cc299a51c09e20629 16 ... 1 1
2021-01-14 20:12:01 6000a60cc299a51c09e2062a 14 ... 1 1
Además, ¿cómo puedo encontrar el tipo preciso que se utiliza en una celda determinada? Gracias.
2 respuestas
Convierta la columna a fecha y hora y use errors='coerce'
para marcar tipos que no sean de fecha y hora en NaT
y luego puede filtrar las filas que no son nulas
df[~pd.to_datetime(df.index, errors='coerce').isnull()]
_id id
updated
2021-01-14 20:12:01 6000a60cc299a51c09e20626 19
2021-01-14 20:12:01 6000a60cc299a51c09e20627 21
2021-01-14 20:12:01 6000a60cc299a51c09e20628 11
2021-01-14 20:12:01 6000a60cc299a51c09e20629 16
2021-01-14 20:12:01 6000a60cc299a51c09e2062a 14
Para conocer el tipo de datos de toda la columna, puede hacer
df['_id'].apply(type)
En caso de índice, puede hacer
pd.Series(df.index.values).apply(type)
Creemos un pequeño ejemplo con un rango de índice y un rango de fechas:
df = pd.DataFrame({'a':[1,2,3]})
df2 = pd.DataFrame({'a':[4,5,6]}, index=pd.date_range('2020-01-01', '2020-01-03', freq='D'))
df_select = df.append(df2)
>>> df_select
a
0 1
1 2
2 3
2020-01-01 00:00:00 4
2020-01-02 00:00:00 5
2020-01-03 00:00:00 6
Ahora puede seleccionar usando información de tipo como esta:
df_select[[isinstance(item, pd.Timestamp) for item in df_select.index.values]]
>>>
a
2020-01-01 00:00:00 4
2020-01-02 00:00:00 5
2020-01-03 00:00:00 6
Espero que esta sea una solución para su problema.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.