使用Pandas转换和创建平面文件



我有以下表格

CODE    LEV NAME
A00     3   text
A000    4   text
A001    4   text
A02     3   text
A022    4   text
A0220   5   text
A33     3   text

对于每个最高级别3,都有子级别4、5、6等。对于某些级别3,没有子级别。我需要转换关卡并使用pandas创建一个有意义的平面文件。

L3    L4    L5    NAME
A00   -     -     text
A00   A000  -     text
A00   A001  -     text
A02   -     -     text
A02   A022  -     text
A02   A022  A0220 text
A33   -     -     text

我可能会被处以私刑,但既然没有更好的答案-希望有帮助:-)

>>> df
CODE LEV  NAME
1    A00   3  text
2   A000   4  text
3   A001   4  text
4    A02   3  text
5   A022   4  text
6  A0220   5  text
7    A33   3  text
>>> (df
...: .groupby(['LEV','NAME'])
...: .agg(list)
...: .reset_index()
...: .explode('CODE')
...: .reset_index()
...: .pivot_table(index=['index', 'NAME'],columns='LEV',values='CODE', aggfunc=list)
...: .reset_index()
...: .explode('3')
...: .explode('4')
...: .explode('5')
...: .drop_duplicates()
...: .reset_index()
...: .drop(['level_0','index'], axis=1)
...: .rename({'3': 'L3', '4': 'L4', '5': 'L5'}, axis=1)
...: .rename_axis(None, axis=1)
...: .fillna('-'))[['L3','L4','L5','NAME']]
L3    L4     L5  NAME
0  A00     -      -  text
1  A02     -      -  text
2  A33     -      -  text
3    -  A000      -  text
4    -  A001      -  text
5    -  A022      -  text
6    -     -  A0220  text

最新更新