我有一个如下所示的CSV数据:
在使用python的pandas中,我想把它转换成这样的东西:
关键是每年都有相同的列变量,其中year是索引。
我已经尝试了许多不同形式的转换手头的dataframe
,如数据透视表,融化,堆叠/拆散等,但无济于事。在这方面的任何帮助将不胜感激!
答案 0 :(得分:1)
你需要的IIUC:
df = df.stack(0)
样品:
mux = pd.MultiIndex.from_product([[2003,2004], ['C', 'D']])
mux1 = pd.MultiIndex.from_product([[1,2], ['A', 'B']], names=('State1','State2'))
np.random.seed(100)
df = pd.DataFrame(np.random.random((4,4)), columns=mux, index = mux1)
print (df)
2003 2004
C D C D
State1 State2
1 A 0.543405 0.278369 0.424518 0.844776
B 0.004719 0.121569 0.670749 0.825853
2 A 0.136707 0.575093 0.891322 0.209202
B 0.185328 0.108377 0.219697 0.978624
print (df.stack(0).swaplevel(1,2).reset_index())
State1 level_1 State2 C D
0 1 2003 A 0.543405 0.278369
1 1 2004 A 0.424518 0.844776
2 1 2003 B 0.004719 0.121569
3 1 2004 B 0.670749 0.825853
4 2 2003 A 0.136707 0.575093
5 2 2004 A 0.891322 0.209202
6 2 2003 B 0.185328 0.108377
7 2 2004 B 0.219697 0.978624