如何在 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
比如说有数据框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