2017-09-03 209 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