Melting a pandas dataframe

前端 未结 4 512
天命终不由人
天命终不由人 2020-12-11 20:19

I have a dataframe like this

    NSW     VIC
0   6718023 5023203
1   6735528 5048207
2   6742690 5061266
3   6766133 5083593
4   6786160 5103965
相关标签:
4条回答
  • 2020-12-11 21:07

    Using 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 讨论(0)
  • 2020-12-11 21:07

    Using 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
    
    0 讨论(0)
  • 2020-12-11 21:07

    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 讨论(0)
  • 2020-12-11 21:08
    df.stack().reset_index(level=0, drop=True).sort_index()
    

    Output:

    NSW    6718023
    NSW    6735528
    NSW    6742690
    NSW    6766133
    NSW    6786160
    VIC    5023203
    VIC    5048207
    VIC    5061266
    VIC    5083593
    VIC    5103965
    dtype: int64
    
    0 讨论(0)
提交回复
热议问题