将 numpy dtypes 转换为 pandas DataFrame

the*_*eta 5 python types numpy pandas

我有这种类型的 numpy 数组:

>>> attr_table.dtype.descr
[('FID', '<i4'),
 ('Shape', '<f8', (2,)),
 ('PROVINCE', '<i4'),
 ('PROVNAME', '<U60'),
 ('PROVABBR', '<U10'),
 ('NATION', '<i4'),
 ('CNTRYNAME', '<U60'),
 ('CNTRYABBR', '<U10')]
Run Code Online (Sandbox Code Playgroud)

如果我从这个数组生成 DataFrame,我会得到:

>>> df_tab = pd.DataFrame(attr_table.tolist())
>>> df_tab.dtypes
0     int64
1    object
2     int64
3    object
4    object
5     int64
6    object
7    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

现在我猜测,如果 pandas 没有转换那些 numpy dtypes,也许我也无法,但由于 DataFrame 函数中有 dtype 参数,我想试试运气:

df_tab = pd.DataFrame(attr_table.tolist(), dtype=attr_table.dtype)
Run Code Online (Sandbox Code Playgroud)

这给了我:

NotImplementedError: compound dtypes are not implementedin the DataFrame constructor
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了其他几种变体,例如定义列并使用元组列表提供 dtype 参数,该元组列表用 numpy dtype 表示法描述每列,但我再次遇到相同的错误。

将类型从 numpy 数组转换为 pandas DataFrame 的正确方法是什么?