基于组的列组合

2024-06-28 11:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

         POLY_KEY_I     SP1     SP2
0   FS01080100SM001  POAPRA  TOXRYD
1   FS01080100SM001     NaN     NaN
2   FS01080100SM001   OXRYD  SYMOCC
3   FS01080100SM001  EUPESU  POAPRA
4   FS01080100SM001  BOUGRA  KOEPYR
5   FS01080100SM002  POAPRA  EUPESU
6   FS01080100SM002  POAPRA     NaN
7   FS01080100SM002  POAPRA  KOEPYR

我想按POLY_KEY_I分组,然后在此基础上组合SP1SP2

我想要的输出是这样的:

         POLY_KEY_I      SP
0   FS01080100SM001  POAPRA
1   FS01080100SM001  TOXRYD
2   FS01080100SM001     NaN
3   FS01080100SM001     NaN
4   FS01080100SM001   OXRYD
5   FS01080100SM001  SYMOCC
6   FS01080100SM001  EUPESU
7   FS01080100SM001  POAPRA
8   FS01080100SM001  BOUGRA
9   FS01080100SM001  KOEPYR 
10  FS01080100SM002  POAPRA
11  FS01080100SM002  EUPESU
12  FS01080100SM002  POAPRA
13  FS01080100SM002     NaN
14  FS01080100SM002  POAPRA
15  FS01080100SM002  KOEPYR

Tags: 数据keynanpolysp2sp1bougraeupesu
1条回答
网友
1楼 · 发布于 2024-06-28 11:22:44

您可以使用^{}从宽到长重塑形状,如下所示:

In [10]: pd.melt(df, id_vars='POLY_KEY_I', value_name='SP')
Out[10]: 
         POLY_KEY_I variable      SP
0   FS01080100SM001      SP1  POAPRA
1   FS01080100SM001      SP1     NaN
2   FS01080100SM001      SP1   OXRYD
3   FS01080100SM001      SP1  EUPESU
4   FS01080100SM001      SP1  BOUGRA
5   FS01080100SM002      SP1  POAPRA
6   FS01080100SM002      SP1  POAPRA
7   FS01080100SM002      SP1  POAPRA
8   FS01080100SM001      SP2  TOXRYD
9   FS01080100SM001      SP2     NaN
10  FS01080100SM001      SP2  SYMOCC
11  FS01080100SM001      SP2  POAPRA
12  FS01080100SM001      SP2  KOEPYR
13  FS01080100SM002      SP2  EUPESU
14  FS01080100SM002      SP2     NaN
15  FS01080100SM002      SP2  KOEPYR

相关问题 更多 >