我正在阅读一个二进制文件,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
我认为它不是为嵌套结构化数组实现的。在您的情况下,您可以像这样破坏 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句