首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何构建多索引转换矩阵?

如何构建多索引转换矩阵?
EN

Stack Overflow用户
提问于 2018-07-24 01:51:15
回答 2查看 0关注 0票数 0

我从以下表格数据开始:(假设按版本列出测试结果)

代码语言:txt
复制
    Item  Result   Version
0   TO     OK      V1
1   T1    NOK      V1
2   T2     OK      V1
3   T3    NOK      V1
4   TO     OK      V2
5   T1     OK      V2
6   T2    NOK      V2
7   T3    NOK      V2
代码语言:txt
复制
df=p.DataFrame({'Item': ['TO','T1','T2','T3','TO','T1','T2','T3'],
                'Version': ['V1','V1','V1','V1','V2','V2','V2','V2'],
                'Result' : ['OK','NOK','OK','NOK','OK','OK','NOK','NOK']})

我试图建立以下报告:

代码语言:txt
复制
            V2
            OK      NOK
V1  OK      T0      T2
    NOK     T1      T3

T0上面应该是一个由函数聚合产生的python 集合set),我想在行和列上都有多索引。

我想不出如何把相同的“结果”栏的两个行和列multiindexes。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2018-07-24 10:21:52

使用pd.pivot_table:

代码语言:txt
复制
g = df.groupby('Item')['Result'].apply(list).reset_index()

g[['V1', 'V2']] = g['Result'].apply(pd.Series)

res = g.pivot_table(index='V1', columns='V2', values='Item', aggfunc='first')

print(res)

V2  NOK  OK
V1         
NOK  T3  T1
OK   T2  TO
票数 0
EN

Stack Overflow用户

发布于 2018-07-24 11:06:18

基本上我们可以用pivot

代码语言:txt
复制
df['New']=list(zip(df.Version,df.Result))
s=df.groupby('Item').New.apply(list).apply(pd.Series).reset_index().pivot(0,1,'Item')
s
Out[502]:
1         (V2, NOK) (V2, OK)
0
(V1, NOK)        T3       T1
(V1, OK)         T2       TO


s.index=pd.MultiIndex.from_tuples(s.index)
s.columns=pd.MultiIndex.from_tuples(s.columns)
s
Out[507]: 
        V2    
       NOK  OK
V1 NOK  T3  T1
   OK   T2  TO
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档