我试图从以下数据框中获取:
DAY Col1 ColA ColB ColC
ID
ABC Mon A 123
DEF Mon A 456
GHI Mon A 789
ABC Tue A 123
DEF Tue A 456
GHI Tue A 789
ABC Wed A 123
DEF Wed A 456
GHI Wed A 789
进入:
ID Mon Tue Wed
ABC 123 123 123
DEF 456 456 456
GHI 789 789 789
因此,我们的想法是删除空单元格,并将列重新分类为唯一的日期,然后是该日期ID的相应值。
感谢我的任何帮助,谢谢!
答案 0 :(得分:1)
您可以使用:
df = (df.drop('Col1', 1)
.set_index(['ID','DAY'])
.stack()
.reset_index(level=2, drop=True)
.unstack())
print (df)
DAY Mon Tue Wed
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0
<强>解释强>:
drop
Col1
set_index
stack
,以便将NaN
和列名移至MultiIndex
reset_index
MultiIndex
unstack
编辑:
df = (df.drop('Col1', 1)
.set_index('DAY', append=True)
.stack()
.reset_index(level=2, drop=True)
.unstack()
)
print (df)
DAY Mon Tue Wed
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0
EDIT1:添加reindex
:
df = (df.drop('Col1', 1)
.set_index('DAY', append=True)
.stack()
.reset_index(level=2, drop=True)
.unstack()
.reindex(columns=['Wed','Tue','Mon'])
)
print (df)
DAY Wed Tue Mon
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0