python - 从不同大小的 numpy 数组创建 pandas 数据框

标签 python arrays python-3.x pandas numpy

我有以下不同形状的 numpy 数组。我想使用 pandas 创建一个数据框,以便我可以整齐地显示它,如下所示:

numpy 数组:

et_arr:  [  8.94668401e+01   1.66449935e+01  -4.44089210e-14]
ea_arr:  [ 100.           21.84087363    1.04031209]
it: 
[[ 0.1728      1.0688      1.4848      1.6008    ]
 [ 1.36746667  1.62346667  1.63946667  0.        ]
 [ 1.64053333  1.64053333  0.          0.        ]
 [ 1.64053333  0.          0.          0.        ]]

结果数据框:

enter image description here

一种方法是在所有 3 个数组之间循环并根据索引进行收集。我已经在一定程度上尝试了 numpy.column_stack 和 zip 和 map,但没有达到预期的结果。

我一直使用 pandas dataframe 来显示结果,而且很简单。这看起来有点棘手。我怎样才能实现这个目标。

最佳答案

如果您已将数组放入字典 data 中,则可以循环遍历键并随时添加:

data = {"et_arr":[8.94668401e+01,1.66449935e+01,-4.44089210e-14],
        "ea_arr":[100.,21.84087363,1.04031209],
        "it":[[0.1728,1.0688,1.4848,1.6008],
              [1.36746667,1.62346667,1.63946667,0.],
              [1.64053333,1.64053333,0.,0.],
              [1.64053333,0.,0.,0.]]}

# To keep track of the order of dict indices we'll capture them as we loop:
indices = []
df = pd.DataFrame()

for k in data.keys():
    df = pd.concat([df, pd.DataFrame(data[k]).T], ignore_index=True).fillna(0)
    if k == "it":
        indices.extend([f"n={i+1}" for i in range(len(data[k]))])
    else:
        indices.append(k)

df.index = indices
df.columns = df.columns + 1

df
                1          2             3         4
et_arr   89.46684  16.644994 -4.440892e-14  0.000000
ea_arr  100.00000  21.840874  1.040312e+00  0.000000
n=1       0.17280   1.367467  1.640533e+00  1.640533
n=2       1.06880   1.623467  1.640533e+00  0.000000
n=3       1.48480   1.639467  0.000000e+00  0.000000
n=4       1.60080   0.000000  0.000000e+00  0.000000

或者,您可以手动将它们混合在一起,但这可扩展性较差:

df = pd.DataFrame(it)
arr_df = pd.DataFrame([et_arr,ea_arr])
df = pd.concat([df, arr_df], ignore_index=True).fillna(0)
df.columns = range(1,5)
df.columns.name = "iter"
df.index = ["n=1","n=2","n=3","n=4","et","ea"]

关于python - 从不同大小的 numpy 数组创建 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47954529/

相关文章:

python - Django:如何访问测试数据库?

Javascript : Increment name if exist

python - turtle 图形窗口没有响应

python-3.x - 如何使用 gitignore 隐藏机器人 Telegram token ?

python - 质数生成器解释?

Python Regex - 在字符串中查找带逗号的数字

python - 如何在spark中设置驱动程序的python版本?

c++ - 在客户的计算机上搜索特定文件

ios - 快速实现功能

java - 为什么我的阵列不是二维打印?