我的问题在下面。
源:
ID subID_1 value_1 subID_2 value_2 subID_3 value_3
-- ------- ------- -------- ------- ------- -------
A aaa 10 abb 30 acc 40
B baa 20 bbb 60 NaN NaN
C caa 50 NaN NaN NaN NaN
希望:
ID subID values
-- ----- --------
A aaa 10
A abb 30
A acc 40
B baa 20
B bbb 60
C caa 50
我使用'unstack()'进行了尝试,但结果与我想要的结果有所不同。
请帮忙。
预先感谢
答案 0 :(得分:2)
如有必要,从ID
列创建索引,DataFrame.set_index
,然后为MultiIndex
创建str.split
列,因此可以通过DataFrame.stack
重塑形状。最后一次数据清理-两次DataFrame.reset_index
-首先用于删除第二级的MultiIndex,第二次用于删除第一级的MultiIndex
:
df = df.set_index('ID')
df.columns = df.columns.str.split('_', expand=True)
df = df.stack().reset_index(level=1, drop=True).reset_index()
print (df)
ID subID value
0 A aaa 10.0
1 A abb 30.0
2 A acc 40.0
3 B baa 20.0
4 B bbb 60.0
5 C caa 50.0