【问题标题】:How to flatten a layered dataset in Pandas如何在 Pandas 中展平分层数据集
【发布时间】:2020-12-15 16:42:15
【问题描述】:

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

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

【问题讨论】:

  • df.melt(['col0,'col1'])
  • 我认为df.mel('col2') 效果更好。
  • 其他 cmets 拥有它——查看pandas.melt 的文档。那里包含示例。

标签: python pandas flatten


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2019-09-20
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多