2017-09-03 368 views
3

我有這樣熔化大熊貓據幀

NSW  VIC 
0 6718023 5023203 
1 6735528 5048207 
2 6742690 5061266 
3 6766133 5083593 
4 6786160 5103965 

我想改變它像一個數據幀這

0 6718023 NSW 
1 6735528 NSW 
2 6742690 NSW 
3 6766133 NSW 
4 6786160 NSW 
5 5023203 VIC 
6 5048207 VIC 
7 5061266 VIC 
8 5083593 VIC 
9 5103965 VIC 

我怎麼能完成這項工作?

+0

經典融化問題! – Parfait

回答

8

melt使用

pd.melt(df) 
    Out[318]: 
     variable value 
    0  NSW 6718023 
    1  NSW 6735528 
    2  NSW 6742690 
    3  NSW 6766133 
    4  NSW 6786160 
    5  VIC 5023203 
    6  VIC 5048207 
    7  VIC 5061266 
    8  VIC 5083593 
    9  VIC 5103965 
+0

我祝你聖誕快樂!並感謝您的支持,小presetn(+5)。祝你好運! – jezrael

+0

@jezrael節日快樂:-) – Wen

4
df.stack().reset_index(level=0, drop=True).sort_index() 

輸出:

NSW 6718023 
NSW 6735528 
NSW 6742690 
NSW 6766133 
NSW 6786160 
VIC 5023203 
VIC 5048207 
VIC 5061266 
VIC 5083593 
VIC 5103965 
dtype: int64 
4

使用df.unstack

df = df.unstack().to_frame().reset_index(level=0).iloc[:, [-1, 0]] 
df.columns = [0, 1] # or whatever else you please 
df 

     0 1 
0 6718023 NSW 
1 6735528 NSW 
2 6742690 NSW 
3 6766133 NSW 
4 6786160 NSW 
0 5023203 VIC 
1 5048207 VIC 
2 5061266 VIC 
3 5083593 VIC 
4 5103965 VIC 
3

FOMO

pd.DataFrame(dict(
    value=df.values.ravel(order='F'), 
    variable=df.columns.repeat(len(df)) 
)) 

    value variable 
0 6718023  NSW 
1 6735528  NSW 
2 6742690  NSW 
3 6766133  NSW 
4 6786160  NSW 
5 5023203  VIC 
6 5048207  VIC 
7 5061266  VIC 
8 5083593  VIC 
9 5103965  VIC 
+0

爲了完整性,您可以添加'.sort_values('variable')' –

+0

本應該重複,而不是平鋪。無需排序( - : – piRSquared