tengo este marco de datos
Python 3.9.0 (v3.9.0:9cf6752276, Oct 5 2020, 11:29:23) [Clang 6.0 (clang-600.0.57)] on darwin >>> import pandas as pd >>> import datetime as datetime >>> pd.__version__ '1.3.5' >>> dates = [datetime.datetime(2012, 2, 3) , datetime.datetime(2012, 2, 4)] >>> x = pd.DataFrame({'Time': dates, 'Selected': [0, 0], 'Nr': [123.4, 25.2]}) >>> x.set_index('Time', inplace=True) >>> x Selected Nr Time 2012-02-03 0 123.4 2012-02-04 0 25.2 Un valor entero de una columna entera se convierte en un valor flotante en el ejemplo, pero no veo el motivo de esta conversión. En ambos casos, supongo que elijo el valor de la columna 'Selected' de la primera fila. ¿Qué está pasando?
>>> x['Selected'].iloc[0] 0 >>> x.iloc[0]['Selected'] 0.0 >>> x['Selected'].dtype dtype('int64')x.iloc[0] selecciona una sola "fila". De hecho, se crea un nuevo objeto de serie . Cuando decide el dtype de esa fila, un pd.Series , usa un tipo de punto flotante, ya que eso no perdería información en la columna "Nr" .
Por otro lado, x['Selected'].iloc[0] primero selecciona una columna , que siempre conservará el dtype.
pandas está fundamentalmente "orientado a columnas". Puede pensar en un marco de datos como un diccionario de columnas (no lo es, aunque creo que solía tener eso debajo del capó, pero ahora usa un enfoque más complejo de "administrador de bloques", pero estos son detalles de implementación interna)