pandas 尝试从两个列表和一个数组创建DataFrame

xxe27gdn  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(109)

我有两个列表和一个数组需要转换成DataFrame,这差不多就是我所拥有的:

listA = ['a', 'b', 'c', 'd']
listB = ['x', 'y', 'z']

array = [[10, 11, 12], [20, 21, 22], [30, 31, 32], [40, 41, 42]]

我希望我的DataFrame如下所示:

我尝试过通过将列表插入到

pd.Dataframe()

然后指定列的名称。但目前为止还没有成功。

6rqinv9w

6rqinv9w1#

pd.MultiIndex.from_product在这里有帮助;它将取给定的两个列表的笛卡尔积,并给出具有如下填充的2个级别的MultiIndex:

>>> pd.DataFrame(np.ravel(array),
                 index=pd.MultiIndex.from_product([listA, listB]), 
                 columns=["value"])
     value
a x     10
  y     11
  z     12
b x     20
  y     21
  z     22
c x     30
  y     31
  z     32
d x     40
  y     41
  z     42
  • 值是散开(展平)的数组
  • index是这两个列表的乘积
  • columns是唯一的“值”。
wn9m85ua

wn9m85ua2#

out = pd.DataFrame(array, index=listA, columns=listB).stack()

输出:

a  x    10
   y    11
   z    12
b  x    20
   y    21
   z    22
c  x    30
   y    31
   z    32
d  x    40
   y    41
   z    42
dtype: int64

相关问题