在 Pandas 中处理具有不等长度数组的字典需要量身定制的方法。当尝试创建一个 DataFrame,其中每一列代表字典中的一个数组时,可能会遇到 ValueError:“数组必须具有相同的长度。”
来规避此问题问题,我们利用 Pandas 的 Series 对象,它可以保存不同长度的数组。通过将每个字典值转换为 Series,我们可以有效地存储数组,而不管数组的长度如何。以下代码片段演示了这种方法:
import pandas as pd import numpy as np # Sample data generated via a reproducible seed np.random.seed(2023) data = {k: np.random.randn(v) for k, v in zip("ABCDEF", [10, 12, 15, 17, 20, 23])} # Convert dictionary values to Series objects series_dict = {k: pd.Series(v) for k, v in data.items()} # Create DataFrame using these Series objects df = pd.DataFrame(series_dict)
处理不同长度的数组时,通常会遇到缺失值,即较短的数组无法填充剩余的单元格。默认情况下,Pandas 使用 NaN(非数字)值填充这些空白。此行为保留原始数据,同时提供一致的分析结构。
如果需要,您可以使用 DataFrame 中的 Missing_values 参数自定义缺失值的处理( ) 构造函数。例如,要用零代替 NaN 替换缺失值,您可以指定missing_values=0,如下所示:
df = pd.DataFrame(series_dict, missing_values=0)
以下输出说明了使用该方法创建的 DataFrame如上所述:
print(df)
A B C D E F 0 0.711674 -1.076522 -1.502178 -1.519748 0.340619 0.051132 1 -0.324485 -0.325682 -1.379593 2.097329 -1.253501 -0.238061 2 -1.001871 -1.035498 -0.204455 0.892562 0.370788 -0.208009 3 0.236251 -0.426320 0.642125 1.596488 0.455254 0.401304 4 -0.102160 -1.029361 -0.181176 -0.638762 -2.283720 0.183169 ... ... ... ... ... ... ... 18 NaN NaN NaN NaN NaN NaN 19 NaN NaN NaN NaN NaN NaN 20 NaN NaN NaN NaN NaN NaN 21 NaN NaN NaN NaN NaN NaN 22 NaN NaN NaN NaN NaN NaN 23 rows × 6 columns
正如您所观察到的,较短的数组会导致相应的 NaN 值单元格,提供数据的全面表示,同时保持所需的表格格式。
以上是如何从数组长度不均匀的字典构造 Pandas DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!