如何在 Pandas 中展平分层数据集

How to flatten a layered dataset in Pandas

比如说有数据框A:

A
col0  col1  col2
'a0'  'a'   'A'
'b0'  'b'   'A'
'c0'  'c'   'A'
'de0' 'd'   'B'
'sas' 'ef'  'B'

我怎样才能到达数据框 B?

B
col1 col2
'a0'  'A'
'a' 'A'
'b0' 'A'
'b'  'A'
'c0' 'A'
'c'  'A'
'de0''B'
'd'  'B'
'sas''B'
'ef' 'B'

任何帮助将不胜感激,在此先感谢

如果您想保留示例中列的准确名称和顺序,请尝试以下操作:

import pandas as pd

df = pd.DataFrame({'col0': ('a0', 'b0', 'c0', 'de0', 'sas'),
                   'col1': ('a', 'b', 'c', 'd', 'ef'),
                   'col2': ('A', 'A', 'A', 'B', 'B')})

sorted_df = sorted_df = df.melt('col2', value_name='col1').drop(columns='variable')\
.sort_values('col1').reset_index(drop=True).sort_index(axis=1)

print(df)

  col0 col1 col2
0   a0    a    A
1   b0    b    A
2   c0    c    A
3  de0    d    B
4  sas   ef    B

print(sorted_df)

  col1 col2
0    a    A
1   a0    A
2    b    A
3   b0    A
4    c    A
5   c0    A
6    d    B
7  de0    B
8   ef    B
9  sas    B