Python Pandas: seleccionando elemento en la columna matriz

Tengo el siguiente dataframe:

pa=pd.DataFrame({'a':np.array([[1.,4.],[2.],[3.,4.,5.]])}) 

Quiero seleccionar la columna ‘a’ y luego solo un elemento en particular (es decir, primero: 1., 2., 3.)

¿Qué necesito agregar a:

 pa.loc[:,['a']] 

?

pa.loc[row] selecciona la fila con la fila de la etiqueta.

pa.loc[row, col] selecciona las celdas que son la sección de row y col

pa.loc[:, col] selecciona todas las filas y la columna llamada col . Tenga en cuenta que aunque esto funciona, no es la forma idiomática de referirse a una columna de un dataframe. Para eso deberías usar pa['a']

Ahora tiene listas en las celdas de su columna, por lo que puede usar los métodos de cadena vectorizada para acceder a los elementos de esas listas como tal.

 pa['a'].str[0] #first value in lists pa['a'].str[-1] #last value in lists 

Almacenar listas como valores en un Pandas DataFrame tiende a ser un error porque le impide aprovechar las rápidas operaciones vectorizadas NumPy o Pandas.

Por lo tanto, es mejor que conviertas tu DataFrame de listas de números en un DataFrame más amplio con tipos de datos nativos de NumPy:

 import numpy as np import pandas as pd pa = pd.DataFrame({'a':np.array([[1.,4.],[2.],[3.,4.,5.]])}) df = pd.DataFrame(pa['a'].values.tolist()) # 0 1 2 # 0 1.0 4.0 NaN # 1 2.0 NaN NaN # 2 3.0 4.0 5.0 

Ahora, puedes seleccionar la primera columna como esta:

 In [36]: df.iloc[:, 0] Out[36]: 0 1.0 1 2.0 2 3.0 Name: 0, dtype: float64 

o la primera fila como esta:

 In [37]: df.iloc[0, :] Out[37]: 0 1.0 1 4.0 2 NaN Name: 0, dtype: float64 

Si desea eliminar los NaN, use .dropna() :

 In [38]: df.iloc[0, :].dropna() Out[38]: 0 1.0 1 4.0 Name: 0, dtype: float64 

y .tolist() para recuperar los valores como una lista:

 In [39]: df.iloc[0, :].dropna().tolist() Out[39]: [1.0, 4.0] 

pero si desea aprovechar NumPy / Pandas para la velocidad, querrá express sus cálculos como operaciones vectorizadas en df sin tener que volver a las listas de Python.