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 的正确方法是什么?