varias una seleccionar recorrer filtrar fila extraer datos data columnas columna python pandas dataframe

python - una - construir pandas DataFrame a partir de valores en variables



seleccionar una fila de un dataframe pandas (10)

Esta puede ser una pregunta simple, pero no puedo entender cómo hacer esto. Digamos que tengo dos variables de la siguiente manera.

a = 2 b = 3

Quiero construir un DataFrame a partir de esto:

df2 = pd.DataFrame({''A'':a,''B'':b})

Esto genera un error:

ValueError: si usa todos los valores escalares, debe pasar un índice

Intenté esto también:

df2 = (pd.DataFrame({''a'':a,''b'':b})).reset_index()

Esto da el mismo mensaje de error.


Debe proporcionar los iterables como valores para las columnas de Pandas DataFrame:

df2 = pd.DataFrame({''A'':[a],''B'':[b]})


El mensaje de error dice que si está pasando valores escalares, debe pasar un índice. Por lo tanto, no puede usar valores escalares para las columnas, por ejemplo, use una lista:

>>> df = pd.DataFrame({''A'': [a], ''B'': [b]}) >>> df A B 0 2 3

o use valores escalares y pase un índice:

>>> df = pd.DataFrame({''A'': a, ''B'': b}, index=[0]) >>> df A B 0 2 3


Este es un comentario a la respuesta de @fAx: la entrada no tiene que ser una lista de registros; también puede ser un diccionario único:

pd.DataFrame.from_records({''a'':1,''b'':2}, index=[0]) a b 0 1 2

Lo cual parece ser equivalente a:

pd.DataFrame({''a'':1,''b'':2}, index=[0]) a b 0 1 2


Esto se debe a que un DataFrame tiene dos dimensiones intuitivas: las columnas y las filas.

Solo está especificando las columnas con las teclas del diccionario.

¡Si solo quieres especificar datos unidimensionales, usa una serie!


Primero debes crear una serie de pandas. El segundo paso es convertir la serie de pandas en un marco de datos de pandas.

import pandas as pd data = {''a'': 1, ''b'': 2} pd.Series(data).to_frame()


Si tiene la intención de convertir un diccionario de escalares, debe incluir un índice:

import pandas as pd alphabets = {''A'': ''a'', ''B'': ''b''} index = [0] alphabets_df = pd.DataFrame(alphabets, index=index) print(alphabets_df)

Aunque el índice no es necesario para un diccionario de listas, la misma idea se puede ampliar a un diccionario de listas:

planets = {''planet'': [''earth'', ''mars'', ''jupiter''], ''length_of_day'': [''1'', ''1.03'', ''0.414'']} index = [0, 1, 2] planets_df = pd.DataFrame(planets, index=index) print(planets_df)

Por supuesto, para el diccionario de listas, puede construir el marco de datos sin un índice:

planets_df = pd.DataFrame(planets) print(planets_df)


Si tiene un diccionario, puede convertirlo en un marco de datos de pandas con la siguiente línea de código:

pd.DataFrame({"key": d.keys(), "value": d.values()})


Tal vez Series proporcionaría todas las funciones que necesita:

pd.Series({''A'':a,''B'':b})

DataFrame puede considerarse una colección de Series, por lo que puedes:

  • Concatenar series múltiples en un marco de datos (como se describe here )

  • Agregue una variable de serie en el marco de datos existente ( ejemplo aquí )


También puede usar pd.DataFrame.from_records que es más conveniente cuando ya tiene el diccionario en la mano:

df = pd.DataFrame.from_records([{ ''A'':a,''B'':b }])

También puede establecer el índice, si lo desea, de la siguiente manera:

df = pd.DataFrame.from_records([{ ''A'':a,''B'':b }], index=''A'')


Tu podrías intentar:

df2 = pd.DataFrame.from_dict({''a'':a,''b'':b}, orient = ''index'')

De la documentación sobre el argumento ''orientar'': si las claves del dict pasado deben ser las columnas del DataFrame resultante, pase ''columnas'' (valor predeterminado). De lo contrario, si las claves deben ser filas, pase ''index''.