En Python, es posible crear un marco de datos a partir de un diccionario donde cada entrada contiene una matriz Numpy. Sin embargo, surgen desafíos cuando las longitudes de la matriz varían entre las entradas. De forma predeterminada, Pandas requiere matrices de longitud uniforme, lo que genera errores como "ValueError: todas las matrices deben tener la misma longitud".
Superación de la discrepancia de longitud
Para abordar En este problema, podemos aprovechar la capacidad de Pandas para usar valores NaN (Not-a-Number) como marcadores de posición para los datos faltantes. Al utilizar esto, podemos crear efectivamente un DataFrame con columnas de diferentes longitudes.
Para lograr esto, podemos convertir cada entrada del diccionario en una serie Pandas, una matriz unidimensional que puede manejar sin problemas los valores faltantes. Al envolver los elementos del diccionario en una expresión generadora y usar el constructor Serie, podemos crear un diccionario de objetos Serie.
import pandas as pd import numpy as np # Sample data with uneven array lengths data = { 'A': np.random.randn(5), 'B': np.random.randn(8), 'C': np.random.randn(4) } # Convert dictionary items to Series series_dict = dict((k, pd.Series(v)) for k, v in data.items()) # Create DataFrame from the dictionary of Series df = pd.DataFrame(series_dict)
Resultado:
In [1]: df Out[1]: A B C 0 1.162543 1.681243 0.191287 1 0.459621 -0.141198 -0.109864 2 -0.866704 -0.128677 -0.511496 3 1.222436 -0.371449 -0.705894 4 -0.980584 1.255133 NaN 5 NaN -0.351051 NaN 6 NaN 0.443017 NaN 7 NaN -1.053693 NaN
Como es evidente, el DataFrame contiene valores faltantes (NaN) donde las longitudes de la matriz difieren, lo que nos permite crear un DataFrame con diferentes longitudes de columna a partir de un diccionario con diferentes longitudes de matriz.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3