正在尝试从以下数据框中获取数据:
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
因此,想法是删除空单元格,然后将列重新分类为唯一的Days,然后是该Day中ID的对应值。
感谢我得到的任何帮助,谢谢!
最佳答案
您可以使用:
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
说明:
通过
Col1
删除不必要的列drop
通过
set_index
创建索引通过
stack
重塑形状以将NaN
和列名称删除为MultiIndex
通过
MultiIndex
删除2级的reset_index
通过
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
关于python - Pandas数据框-将行索引值重新排列为列标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49421753/