【发布时间】:2017-10-06 17:23:33
【问题描述】:
我有一个列多索引的 DataFrame:
System A B
Trial Exp1 Exp2 Exp1 Exp2
1 NaN 1 2 3
2 4 5 NaN NaN
3 6 NaN 7 8
结果对于每个系统 (A, B) 和每个测量值 (1, 2, 3 in index),Exp1 的结果总是优于 Exp2。因此,我想为每个系统生成第三列,将其命名为Final,只要可用,它就应该采用Exp1,否则默认为Exp2。想要的结果是
System A B
Trial Exp1 Exp2 Final Exp1 Exp2 Final
1 NaN 1 1 2 3 2
2 4 5 4 NaN NaN NaN
3 6 NaN 6 7 8 7
最好的方法是什么?
我尝试在列上使用groupby:
grp = df.groupby(level=0, axis=1)
并且正在考虑使用transform 或apply 结合assign 来实现它。但是我无法找到一种可行的或有效的方法。具体来说,出于效率原因,我避免使用原生 python for 循环(否则问题很简单)。
【问题讨论】:
标签: pandas dataframe multi-index