Python 使用pandas部分取消桌子的锁定

Python 使用pandas部分取消桌子的锁定,python,pandas,Python,Pandas,这是一个表,需要按类将其部分解压 ID Class Type 2017 2018 12A A Net 1 7 12B A Gross 8 12A B Net 3 9 12B B Gross 4 10 13A A Net 5 11 13C B Net 6 5 预期结果: ID Class

这是一个表,需要按类将其部分解压

ID  Class   Type       2017 2018
12A     A   Net         1   7
12B     A   Gross           8
12A     B   Net         3   9
12B     B   Gross       4   10
13A     A   Net         5   11
13C     B   Net         6   5
预期结果:

ID  Class   Type    2017A       2018A      2017B    2018B
12A    A    Net     1           7           3       9
12B    A    Gross   NaN         8           4       10
13A    A    Net     5           11          NaN     NaN
13C    B    Net     NaN         NaN         6       5
使用:

说明

  • 按和重塑形状,按第二级对列排序按
  • 在列表理解的列中展平多索引
  • 对于列
    Class
    用于创建的新第二列
  • df1 = df.set_index(['ID','Type','Class']).unstack().sort_index(level=1, axis=1)
    df1.columns = ['{}{}'.format(a,b) for a, b in df1.columns]
    df1 = df1.reset_index()
    
    s = df.drop_duplicates('ID').set_index('ID')['Class']
    df1.insert(1, 'Class', df1['ID'].map(s))
    print (df1)
        ID Class   Type  2017A  2018A  2017B  2018B
    0  12A     A    Net    1.0    7.0    3.0    9.0
    1  12B     A  Gross    NaN    8.0    4.0   10.0
    2  13A     A    Net    5.0   11.0    NaN    NaN
    3  13C     B    Net    NaN    NaN    6.0    5.0