我有以下格式的数据集:
county area pop_2006 pop_2007 life_2006 life_2007
01001 275 1037 1052 102 121
01003 394 2399 2424 438 221
01005 312 1638 1647 660 221
我需要这样的格式:
county year area pop life
01001 2006 275 1037 102
01001 2007 275 1052 121
01003 2006 394 2399 438
01003 2007 394 2424 221
01005 2006 312 1638 660
01005 2007 312 1647 221
我尝试了MultiIndex
,但它会生成按字典顺序排列的列。 (显然,我在Python / Pandas中大部分都是文盲,所以请保持温和。)
答案 0 :(得分:1)
你可以使用wide_to_long
,这与在R中使用tidyr非常相似。
import pandas as pd
dat = pd.DataFrame(data={"county": ["01001", "01003", "01005"],
"area": [275, 394, 312],
"pop_2006": [1037, 2399, 1638],
"pop_2007": [1052, 2424, 1647],
"life_2006": [102, 438, 660],
"life_2007": [121, 221, 221]})
pd.wide_to_long(dat,['life','pop'],i=['county','area'],j='year',sep='_').reset_index(drop=False)
Out[27]:
county area year life pop
0 01001 275 2006 102 1037
1 01001 275 2007 121 1052
2 01003 394 2006 438 2399
3 01003 394 2007 221 2424
4 01005 312 2006 660 1638
5 01005 312 2007 221 1647