python - 来自 MultiIndex 和 NumPy 结构化数组 (recarray) 的 Pandas DataFrame

标签 python numpy pandas dataframe multi-index

首先,我创建一个两级 MultiIndex :

import numpy as np
import pandas as pd

ind = pd.MultiIndex.from_product([('X','Y'), ('a','b')])

我可以这样使用它:

pd.DataFrame(np.zeros((3,4)), columns=ind)

这给出:

     X         Y     
     a    b    a    b
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0

但现在我正在尝试这样做:

dtype = [('Xa','f8'), ('Xb','i4'), ('Ya','f8'), ('Yb','i4')]
pd.DataFrame(np.zeros(3, dtype), columns=ind)

但是这给出了:

Empty DataFrame
Columns: [(X, a), (X, b), (Y, a), (Y, b)]
Index: []

我期望的结果与之前的结果类似,有三行。

也许更一般地说,我想要做的是生成一个具有 MultiIndex 列的 Pandas DataFrame,其中列具有不同的类型(如示例中,a 是 float,但 b 是 int)。

最佳答案

这看起来像一个错误,值得报告 as an issue github .

解决方法是在构建后手动设置列:

In [11]: df1 = pd.DataFrame(np.zeros(3, dtype))

In [12]: df1.columns = ind

In [13]: df1
Out[13]:
     X       Y
     a  b    a  b
0  0.0  0  0.0  0
1  0.0  0  0.0  0
2  0.0  0  0.0  0

关于python - 来自 MultiIndex 和 NumPy 结构化数组 (recarray) 的 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732403/

相关文章:

python - Flask-CLI 无法运行应用程序?

python - 在python中获取方阵的上三角或下三角的所有元素

python - 在 python/scipy 中进行模型选择

python - Plotly:如何在指定阈值的折线图上显示不同的颜色段?

pandas - 当定义的掩码为真时如何更改特定列值?

python - 分组、排序和加入

Python二级继承

python Pandas : apply a function with arguments to a series. 更新

python - pip 安装不起作用,InvalidSchema : Missing dependencies for SOCKS support

python - 如何将 numpy 数组图像转换为字节?