我有一个数据框,其中行是不同的情况,列是可能的事件,格式为:
df_prob
index colA colB colC ColD
0 NaN 0.9 NaN 0.1
1 NaN NaN 0.3 0.7
2 1 NaN NaN NaN
我需要构建一个df,其中列出每种情况以及该情况的可能事件:
df_order
index case event prob
0 0 colB 0.9
1 0 colD 0.7
2 1 colC 0.3
3 1 colD 0.7
4 2 colA 1
另一个困难是它是一个非常分散的矩阵,因此它的大多数值都是NAN,我一直在尝试找到一些不使用循环的方法,因为它的df约为30000 x 30000。
答案 0 :(得分:1)
使用stack
,然后重置索引:
(df.set_index('index')
.stack()
.reset_index()
.set_axis(['case', 'event', 'prob'], axis=1, inplace=False))
case event prob
0 0 colB 0.9
1 0 ColD 0.1
2 1 colC 0.3
3 1 ColD 0.7
4 2 colA 1.0