Pandas Build DataFrame fila por fila
- Crear filas en Pandas DataFrame
-
Uso de la función
loc()
para crear filas en Pandas DataFrame -
Uso de la función
pandas.concat()
para crear filas en Pandas DataFrame
Este artículo demuestra cómo construir un marco de datos en filas en lugar de la convención en columnas que se sigue habitualmente en Pandas.
Crear filas en Pandas DataFrame
Pandas DataFrame es una estructura que almacena datos con dos dimensiones y las etiquetas correspondientes a esas dimensiones. Los marcos de datos son comparables a las tablas y hojas de cálculo SQL que se pueden manipular en aplicaciones como Excel y Calc.
Debido a que son un componente esencial de los ecosistemas Python y NumPy, los marcos de datos suelen ser superiores a las tablas y hojas de cálculo en términos de velocidad, facilidad de uso y potencia. Este es el caso de muchas aplicaciones.
Como estructura de almacenamiento de datos, en función de una condición específica, puede ser necesario que los datos se ingresen fila por fila en lugar de columna por columna.
Considere el siguiente código.
import pandas
df = pandas.DataFrame(
columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}
print("Attempt 1")
# df['y'] = y
# print(df)
print("Attempt 2")
# df.join(y)
Los siguientes resultados de cada intento se escriben por separado.
Salida (Intento 1):
Attempt 1
a b c d e y
v NaN NaN NaN NaN NaN NaN
w NaN NaN NaN NaN NaN NaN
x NaN NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN NaN
Salida (Intento 2):
Traceback (most recent call last):
File "d:\Test\test.py", line 13, in <module>
df.join(y)
File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 9969, in join
return self._join_compat(
File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in _join_compat
can_concat = all(df.index.is_unique for df in frames)
File "C:\Program Files\Python310\lib\site-packages\pandas\core\frame.py", line 10036, in <genexpr>
can_concat = all(df.index.is_unique for df in frames)
AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'
En el código anterior, primero se inicializa una instancia de DataFrame, con columnas ['a','b','c','d', 'e']
con índices ['v', 'w','x','y','z']
. El objetivo principal es agregar elementos por filas, que, como se desprende del código en nuestro caso, es y
.
Los datos a ingresar en la entrada se inicializan, con los valores correspondientes a cada columna dados como {'a':1, 'b':5, 'c':2, 'd':3, 'e': 7}
.
En el primer intento, los datos creados se asignan al DataFrame configurándolo en el índice y
, usando df[y]
. Pero, como se ve en la salida, se crea una nueva columna, con todos sus miembros siendo NaN
, como con todos los demás elementos.
En el segundo intento, se usa el método join()
para tratar de unir los datos declarados al propio DataFrame, lo que también da un error, el objeto "función_integrada_o_método' no tiene atributo 'es_único'"
. Este problema se puede abordar con las siguientes técnicas que se mencionan a continuación.
- Uso de la función
loc()
.
- Uso de la función
pandas.concat()
.
Uso de la función loc()
para crear filas en Pandas DataFrame
Considere el siguiente código:
import pandas
df = pandas.DataFrame(
columns=["a", "b", "c", "d", "e"], index=["v", "w", "x", "y", "z"]
)
print("Current Shape:\n" + str(df))
y = {"a": 1, "b": 5, "c": 2, "d": 3, "e": 7}
df.loc["y"] = pandas.Series(y)
print("DataFrame:\n" + str(df))
Producción :
Current Shape:
a b c d e
v NaN NaN NaN NaN NaN
w NaN NaN NaN NaN NaN
x NaN NaN NaN NaN NaN
y NaN NaN NaN NaN NaN
z NaN NaN NaN NaN NaN
DataFrame:
a b c d e
v NaN NaN NaN NaN NaN
w NaN NaN NaN NaN NaN
x NaN NaN NaN NaN NaN
y 1 5 2 3 7
z NaN NaN NaN NaN NaN
La propiedad loc
de la clase DataFrame se utiliza para acceder a una fila o columna de un DataFrame. La propiedad loc
permite el acceso a una o un grupo de filas y columnas y una matriz booleana.
En nuestro código, usamos la propiedad loc
ya que la propiedad está basada en etiquetas. De ahí pasamos la etiqueta (o índice) deseada, y
en nuestro caso.
Tenga en cuenta que panda.Series()
es para alinear la entrada en caso de que no tenga que especificar todos los elementos.
Uso de la función pandas.concat()
para crear filas en Pandas DataFrame
Considere el siguiente código:
import pandas
df = pandas.DataFrame(columns=["a", "b", "c", "d", "e"], index=[])
print("Current Shape:\n" + str(df))
entry = pandas.DataFrame.from_dict(
{
"a": [1, 6, 11, 16],
"b": [2, 7, 12, 17],
"c": [3, 8, 13, 18],
"d": [4, 9, 14, 19],
"e": [5, 10, 15, 20],
}
)
df = pandas.concat([df, entry])
print("DataFrame:\n" + str(df))
Producción :
Current Shape:
Empty DataFrame
Columns: [a, b, c, d, e]
Index: []
DataFrame:
a b c d e
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
Se declara el método from_dict()
, que contiene un diccionario que contiene los nombres de las columnas y sus valores correspondientes, a partir del cual se crea un nuevo DataFrame. Esta instancia de DataFrame recién creada se almacena en la variable llamada entrada
, que corresponde a los nuevos elementos que queremos agregar a nuestro DataFrame original.
Después de que se crea el marco de datos y se asignan los datos al marco de datos, ahora debemos encontrar una manera de unir las dos instancias de marco de datos. Usando el método pandas.concat()
, podemos concatenar dos instancias de DataFrame, y el DataFrame resultante se almacena en la primera instancia.
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedInArtículo relacionado - Pandas DataFrame
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma