Python 如何建立多指标转移矩阵?

Python 如何建立多指标转移矩阵?,python,pandas,pivot-table,multi-index,Python,Pandas,Pivot Table,Multi Index,我从以下表格数据开始:(假设测试结果按版本) 我尝试构建以下报告: V2 OK NOK V1 OK T0 T2 NOK T1 T3 V2 OK NOK V1正常T0 T2 NOK T1 T3 (上面的T0应该是一个pythonset集合,由set函数聚合而成),我希望在行和列上都有多个索引 我不知道如何在行和列多索引中放置相同的“结果”列。有什么线索吗?IIUC,基本上我们可以使用pivot df['New']=l

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

我尝试构建以下报告:

V2 OK NOK V1 OK T0 T2 NOK T1 T3 V2 OK NOK V1正常T0 T2 NOK T1 T3 (上面的
T0
应该是一个pythonset集合,由
set
函数聚合而成),我希望在行和列上都有多个索引


我不知道如何在行和列多索引中放置相同的“结果”列。有什么线索吗?

IIUC,基本上我们可以使用
pivot

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

这是一个使用pd.pivot\u表的解决方案:

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

@温,也许,如果第一级只有一个值,这只是另一个想法。很公平:-)
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
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