簡體   English   中英

如何從自定義numpy dtype創建具有MultiIndex的DataFrame?

[英]How to create a DataFrame with MultiIndex from custom numpy dtype?

我正在用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM