【问题标题】:convert pandas Series of numpy matricies to Multiindex Series将 pandas 系列的 numpy 矩阵转换为 Multiindex 系列
【发布时间】:2018-07-25 10:48:10
【问题描述】:

我有一个 pandas 系列的 numpy 矩阵。

data = [[['a','b','c'],[6,3,4]],[['d','e','f'],[2,9,4]],[['g','h','i'],[9,6,4]]]
s = pd.Series(data = data)
s
Out[39]: 
0    [[a, b, c], [6, 3, 4]]
1    [[d, e, f], [2, 9, 4]]
2    [[g, h, i], [9, 6, 4]]

我想将其转换为多索引系列。

sf
Out[47]: 
0  a    6
   b    3
   c    4
1  d    2
   e    9
   f    4
2  g    9
   h    6
   i    4
dtype: int64

sf.index
Out[48]: 
MultiIndex(levels=[[0, 1, 2], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']],
           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2], [0, 1, 2, 3, 4, 5, 6, 7, 8]])

我该怎么做?

【问题讨论】:

    标签: python pandas numpy multi-index


    【解决方案1】:

    是未嵌套列表+set_index

    v=s.apply(pd.Series)
    m=list(map(len,v[0]))
    
    pd.DataFrame({'v1':v[0].sum(),'v2':v[1].sum()},index=v.index.repeat(m)).set_index('v1',append=True).v2
    Out[142]: 
      v1    
    0 a    6
      b    3
      c    4
    1 d    2
      e    9
      f    4
    2 g    9
      h    6
      i    4
    

    【讨论】:

    • 哇,我很难理解第 3 行(但谢谢!)
    • @Selah sum with list of list 将创建一个扁平列表,此处重复是创建索引,例如 1 重复 3 将等于 [1,1,1]
    猜你喜欢
    • 2016-08-26
    • 2014-12-19
    • 2012-10-13
    • 2015-04-30
    • 2017-04-11
    • 2017-04-28
    • 2012-08-28
    • 2021-05-15
    • 2017-05-17
    相关资源
    最近更新 更多