我正在阅读包含np.fromfile
的二进制文件,我想将其转换为DataFrame
。二进制文件的格式如下:
import numpy as np
import pandas as pd
dtyp = np.dtype([
('group1', [('item1', 'int'), ('item2', 'int')]),
('group2', [('item1', 'int'), ('item2', 'int')])
])
arr = np.zeros(shape=2, dtype=dtyp)
现在,我想把它变成一个DataFrame,所以我尝试了这个:
pd.DataFrame.from_records(arr)
group1 group2
0 (0, 0) (0, 0)
1 (0, 0) (0, 0)
......但这不是我想要的。列名'item1'
和'item2'
将丢失。我想要的输出在列上有MultiIndex
,如下所示:
group1 group2
item1 item2 item1 item2
0 0 0 0 0
1 0 0 0 0
答案 0 :(得分:0)
我认为它没有针对嵌套结构化数组实现。在你的情况下,你可以 像这样破坏dtype:
def mkd(arr):
d={}
for n1 in arr.dtype.names:
for n2 in arr[n1].dtype.names:
d[(n1,n2)]=arr[n1][n2]
return pd.DataFrame(d)
有关
In [1]: mkd(arr)
Out[1]:
group1 group2
item1 item2 item1 item2
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0