将 pandas 系列的 numpy 矩阵转换为 Multiindex 系列
Posted
技术标签:
【中文标题】将 pandas 系列的 numpy 矩阵转换为 Multiindex 系列【英文标题】:convert pandas Series of numpy matricies to Multiindex Series 【发布时间】: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]])
我该怎么做?
【问题讨论】:
【参考方案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]以上是关于将 pandas 系列的 numpy 矩阵转换为 Multiindex 系列的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas 稀疏数据帧转换为稀疏 numpy 矩阵以供 sklearn 使用?